大白话 设计模式之虚拟工厂

 2023-09-09 阅读 25 评论 0

摘要:什么是设计模式 现在聊起来java设计,那就必然要聊聊设计模式,几年前我刚入行的时候,总是听人说起设计模式,在当时的我看来,那是多么高大上的东西啊,以至于有种遥不可及的感觉,如今自己做java也好几个年头了,今天来谈谈如今我眼中的设计模式 说白了,设计模式就是前辈高人总结出

什么是设计模式

现在聊起来java设计,那就必然要聊聊设计模式,几年前我刚入行的时候,总是听人说起设计模式,在当时的我看来,那是多么高大上的东西啊,以至于有种遥不可及的感觉,如今自己做java也好几个年头了,今天来谈谈如今我眼中的设计模式

说白了,设计模式就是前辈高人总结出来的一套编写好代码的方法,就好比是面向对象的武林秘籍,凡夫俗子如果能够运用自如也立马能够成为武林高手.

那什么又是虚拟工厂呢?

虚拟设计案例、在聊虚拟工厂之前,我们先举个例子:

 我们把汉堡快餐店抽象到面向对象的世界里,那我们要怎么做呢? 首先我们建造一个快餐店的模型,我们可以在快餐店里点汉堡,点饮料

public interface FastFoodStore {
/**点汉堡 */
Hamburger orderHamburger();/**点饮料 */
Drink orderDrink();
}

虚拟现实内容制作中心。 有了快餐店,我们不能忘记最重要的东西--食物, 于是我们有了汉堡和饮料的模型:

public interface Drink {
/** */
public void desc();
}public interface Hamburger {
/** */
void desc();
}

 那么你喜欢吃哪家快餐呢? 我们有很多种选择,比如说KFC,

public class KFC implements FastFoodStore {
/**点KFC的汉堡 */
public Hamburger orderHamburger() {return new KFCHamburger();
}/**点KFC的饮料 */
public Drink orderDrink() {return new KFCDrink();
}}

虚拟工厂、比如说McDonald:

public class Mcdonald implements FastFoodStore {
/**点McDonald汉堡 */
public Hamburger orderHamburger() {return new McHamburger();
}/**点McDonald饮料 */
public Drink orderDrink() {return  new McDrink();
}
}

当然每个店的口味可不一样,对于KFC,它有自己的汉堡和饮料:

public class KFCDrink implements Drink {
/** */
public void desc() {System.out.println("KFC饮料");
}
}public class KFCHamburger implements Hamburger {
/** */
public void desc() {System.out.println("KFC汉堡");
}
}

McDonald 也一样:

public class McDrink implements Drink {
/** */
public void desc() {System.out.println("Mcdonald饮料");
}
}public class McHamburger implements Hamburger {
/** */
public void desc() {System.out.println("McDonald汉堡");
}
}

纠结了半天,我打算两家都吃一遍:

public static void main(String[] args) {FastFoodStore food ;Hamburger hamburger;Drink drink;//先去KFCfood = new KFC();//点餐hamburger = food.orderHamburger();drink = food.orderDrink();//看看卖相怎么样hamburger.desc();drink.desc();//再去McDonaldfood = new Mcdonald();//点餐hamburger = food.orderHamburger();drink = food.orderDrink();//再看看怎么样hamburger.desc();drink.desc();
}

结果

KFC汉堡
KFC饮料
McDonald汉堡
Mcdonald饮料

其实这就是抽象工厂,引用专业的定义就是 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类

在这个例子中,一组相关的东西就是指汉堡和饮料,我们有KFC和McDonald两个工厂为我们制造这些食物,我们不用关心汉堡和饮料到底是怎么制造的,我们只要知道去哪家店能吃到什么就好,不是吗?

转载于:https://www.cnblogs.com/j2eeDevelper/p/5201654.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/22195.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息