穿越运动工厂店,穿越的故事 之简单工厂模式

23种设计模式 之简单工厂模式

一、定义
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
二、优点
良好的封装性,代码结构清晰,扩展性非常优秀,屏蔽产品类,产品类的调用不影响调用者。
三、故事继续(代码示例)
这天一大早,李实名就把空明,曹草,黑子都叫来办公室,刚一进门,李实名就说到:
“近来很忙吧?”
“还好,还好....."谁敢说忙啊?!想被炒鱿鱼啊.....
“最近我们酒楼的整体差不多了,但是主要的是 我们做什么菜呢?你们也知道中华美食太大,很难选择..”
“我们应该选择一个或者两个菜系主打,其他的先放一放......”空明说道。
“没错,我们也是这样想的......”曹草赶紧插一句,同时望了一眼空明。
“那我们做哪种菜系呢?黑子你说。”
“我觉得,现在主流的菜系很多,我们不可能一一做到,不如川菜和粤菜好了?!”
“哦,你们两个呢,觉得黑子说的怎么样?”
“好好,好啊.....”两个家伙忙不迭的说道。
“OK,就这么说定了!哈哈哈......黑子,这段时间你得多操点心啊?”
“没问题!”
于是这酒楼就选择了粤菜和川菜两大菜系做为主打,那要怎么生产呢?这可够黑子头疼的...
首先,菜是产品,厨房是“工厂”,于是我们选择工厂模式(其他的也行)
1 产品的抽象类(就是 菜)
package JianDan; public abstract class Cai { public abstract void jieShao(); }
2 川菜 抽象菜的实现类1
package JianDan; public class ChuanCai extends Cai { @Override public void jieShao() { System.out.println("这是川菜,辣的要死!"); } }
3 粤菜 抽象菜的实现类2
package JianDan; public class YueCai extends Cai { @Override public void jieShao() { System.out.println("这是粤菜,甜到要死!"); } }
4 厨房 在这里做菜
package JianDan; public class ChuFang { public static T createCai(Class c) { Cai cai = null; try { cai = (Cai)Class.forName(c.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T)cai; } }
5 场景类 生产过程
package JianDan; public class Client { public static void main(String[] args) { //生产粤菜 System.out.println("...........第一种菜系.........."); Cai yueCai = ChuFang.createCai(YueCai.class); yueCai.jieShao(); //生产川菜 System.out.println("...........第二种菜系.........."); Cai chuanCai = ChuFang.createCai(ChuanCai.class); chuanCai.jieShao(); } }
大功告成,黑子很开心,他叫来李实名和两位同僚,一起视察厨房:
...........第一种菜系..........
这是粤菜,甜到要死!
...........第二种菜系..........
这是川菜,辣的要死!
成功了,李实名觉得很满意:
“干得好,黑子!”
“哪里哪里....您领导的好才是....”
这是空明脸色阴郁,说道:
“boss,现代人中有许多人,他们不吃荤菜,他们说什么 ‘田园生活’ ,我们可不可以在川菜和粤菜中都区分出荤菜和素菜呢?”说完,深深地看了黑子一眼。
“MMD......”黑子心想,不过嘴上还是说“多谢空总管提醒,我试试吧”
黑子能不能成功呢?下次再讲.........................
Tags:  简单工厂设计模式 简单工厂模式 穿越火线暴风工厂 穿越火线武器工厂 穿越运动工厂店

延伸阅读

最新评论

发表评论