[Head First设计模式]饺子馆(冬至)中的设计模式――工厂模式

2014-11-24 07:37:25 · 作者: · 浏览: 0
今天是冬至,去饺子馆吃饺子,看他们店里面的水饺种类挺多,在等待中,在想是不是可以用设计模式模拟一下,生产饺子的过程,正好最近也在看工厂模式,也就现学现卖了。当然,实现的方式很多,只是一个例子而已。祝大家冬至,多多吃水饺.....
对象创建的问题?
我们应该面向接口 编程而不是面向实现编程,因为面向实现编程会使得我们的设计更脆弱,缺乏灵活性。但是我们每次使用new时,是不是正在违背这一设计原则呢?
当我们拥有一组相关的具体类时,是不是常常被迫写出类似下面的代码?
1 Duck duck;
2
3 if(picnic){
4
5 duck=new MallardDuck();
6
7 }else if(hunting){
8
9 duck=new DecogDuck();
10
11 }else if(inBathTub){
12
13 duck=new RubberDuck();
14
15 }
(以上为伪代码,只为说明问题)
向上面的实例化过程,知道运行时我们才知道需要实例化哪个类。
这样做的后果是如果应用要做变化或扩展,往往要修改这段代码。这使得维护困难,并容易引入错误。