工厂模式
来源:互联网 发布:部落冲突各本升级数据 编辑:程序博客网 时间:2024/06/04 01:04
一直感觉自己不是个称职的程序员,原因在哪始终找不到,这些天经过一系列的打击之后貌似找到了一些方向,首先就是设计模式和数据结构,好了废话不多说,今天写简单工厂模式。看了好多博客和代码,借鉴了这个人的博客:http://blog.csdn.net/weiwenlongll/article/details/6918164
我觉的简单工厂模式有一个通用的图,以后大家在遇到工场的时候首先想到这个图,记住这个图,以后的路就好走了:
简单工厂模式解决的问题是:如何去实例化一个合适的对象。
简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程。
图如下:
大家看这个图,这里有一个工场负责创建产品,通常在简单工场设计模式中会有一个产品类,这个类的作用就是给下边的具体类继承。好下面举个例子:
场景:本人程序猿一枚,有女票(大家不要羡慕),但是女票有很多闺蜜,所以必须搞定这些闺蜜,当然,请吃饭就是其中必须的一环(虽然心疼钱,但是为了女票值了),
我要请女票的三个闺蜜吃肯德基,每个人的口味不一样,当然,大家都知道这个流程,几个人到肯德基点餐,之后肯德基给你食物,然后付账就是我的事了。
大家注意几点,我并不能生产食物,当然是肯德基生产食物,我们来消费,肯德基抱恨很多食物,有鸡腿,猪肉,薯条等等,所以把这个过程抽象成上边的通用图,如下:
这样的话我们就好理解了,我们需要创建这些类:
1.Food类,get方法(假设能获得食物)
2.鸡腿类(Chicken,继承自Food)
3.薯条类(Chips,继承自Product)
4.工厂类(KFC类,最重要,生产食物)
代码实现如下:
Food类:
package SimpleFactory;public interface Food {public String getFood();// 获得食物方法}Chicken类:
package SimpleFactory;public class Chicken implements Food{@Overridepublic String getFood() {System.out.println("获得一个鸡腿!!!");return "Chicken";}}Chips类:
package SimpleFactory;public class Chips implements Food{@Overridepublic String getFood() {System.out.println("获得一个薯条!!!");return "Chips";}}KFCFactory类:
package SimpleFactory;/** * 工场类:调用食物类生产食物 * * */public class KFCFactory {public static Food createFood(String foodName){Food food = null;switch(foodName){case "Chicken":food = new Chicken();break;case "Chips":food = new Chips();break;default:food = null;}return food;}}
测试类:
package SimpleFactory;public class Test {public static void main(String[] args){KFCFactory ff = new KFCFactory();Food foodChichen = ff.createFood("Chicken");String chicken = foodChichen.getFood();Food foodChips = ff.createFood("Chips");String chips = foodChips.getFood();if(chicken == null){System.out.println("没有这个对应的工厂类!!!");}if(chips == null){System.out.println("没有这个对应的工厂类!!!");}}}
输出:
获得一个鸡腿!!!获得一个薯条!!!这样,我们就实现了一个简单的简单工厂模式范例。刚刚入门,希望大牛们指出错误。
0 0
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- tcp连接Recv-Q、syn flood攻击及backlog监控
- JAVA给图片添加图片水印或文字水印
- 【BZOJ3862】Little Devil I【树链剖分】【线段树】
- VMware Workstation学习之路——网络设置——仅主机模式
- ubuntu下截窗口图
- 工厂模式
- SQLite 常用函数
- IOS属性修饰符总结
- UNICODE字符集表
- android Path 和 PathMeasure 进阶
- fedora下Fcitx输入法的切换
- java esl连接freeswitch(一)之环境搭建
- Android百度地图SDK:隐藏比例尺,隐藏百度LOGO,隐藏缩放控件
- 51nod 1137 矩阵乘法