工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。这样,客户程序中关于超类的代码就和子类对象创建代码解耦了。
主要示例代码:
01 |
public abstract class PizzaStore
{ |
02 |
public Pizza
orderPizza(String type){ |
03 |
Pizza
pizza = createPizza(type); |
04 |
pizza.prepare(); |
05 |
pizza.bake(); |
06 |
pizza.cut(); |
07 |
pizza.box(); |
08 |
return pizza; |
09 |
} |
10 |
abstract Pizza
createPizza(String type); |
11 |
} |
12 |
13 |
14 |
public abstract class Pizza
{ |
15 |
String
name; |
16 |
String
dough; |
17 |
String
sauce; |
18 |
void prepare(){ |
19 |
System.out.println("prepare
pizza"); |
20 |
} |
21 |
void bake(){ |
22 |
System.out.println("bake
pizza"); |
23 |
} |
24 |
void cut(){ |
25 |
System.out.println("cut
pizza"); |
26 |
} |
27 |
void box(){ |
28 |
System.out.println("box
pizza"); |
29 |
} |
30 |
} |
31 |
32 |
33 |
public class NYStylePizzaStore extends PizzaStore{ |
34 |
35 |
public Pizza
createPizza(String type) { |
36 |
Pizza
pizza = null; |
37 |
if(type.equals("cheese")){ |
38 |
pizza
= new NYStyleCheesePizza(); |
39 |
}else if(type.equals("veggie")){ |
40 |
pizza
= new NYStyleVeggiePizza(); |
41 |
} |
42 |
else if(type.equals("clam")){ |
43 |
pizza
= new NYStyleClamPizza(); |
44 |
} |
45 |
return pizza; |
46 |
} |
本文介绍工厂方法模式的基本概念,通过示例代码展示了如何利用抽象基类实现对象的创建过程,子类可以根据具体需求实例化不同的类,使得客户端代码与具体的对象创建过程解耦。
2078

被折叠的 条评论
为什么被折叠?



