对象创建的问题?
当我们拥有一组相关的具体类时,是不是常常被迫写出类似下面的代码?
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 }
(以上为伪代码,只为说明问题)
向上面的实例化过程,知道运行时我们才知道需要实例化哪个类。
这样做的后果是如果应用要做变化或扩展,往往要修改这段代码。这使得维护困难,并容易引入错误。