java设计模式——01——工厂模式

1,普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。

 1 package javat.t1;
 2 
 3 public class Template {
 4 public static void main(String[] args) {
 5     AutoFactory af=new AutoFactory();
 6     FactoryMode fm1=af.produce(1);
 7     FactoryMode fm0=af.produce(0);
 8     fm1.AutoOnOff();
 9     fm0.AutoOnOff();
10 }
11 }
12 /*
13  * 第一步:创建接口
14  */
15 interface FactoryMode {
16     public void AutoOnOff();
17 }
18 
19 /*
20  * 第二步:创建实现类
21  */
22 class TurnOn implements FactoryMode{
23     public void AutoOnOff() {
24         System.out.println("开关打开。");    
25     }
26 }
27 
28 class TurnOff implements FactoryMode{
29     public void AutoOnOff() {
30         System.out.println("开关关闭。");
31     }
32 }
33 /*
34  * 第三步:创建工厂类
35  */
36 class AutoFactory{
37     public FactoryMode produce(int signal){
38         if(signal==1){
39             return new TurnOn();
40         }else if(signal==0){
41             return new TurnOff();
42         }else{
43             System.out.println("请输入正确信号!");
44             return null;
45         }
46     }
47 }

2、多个工厂方法模式,是对普通工厂方法模式的改进。

在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。

在上面代码中只需要修改[步骤三:工厂类]

 1 /*
 2  * 第三步:创建工厂类
 3  */
 4 class AutoFactory{
 5     public FactoryMode produceTurnOn(){
 6         return new TurnOn();
 7     }
 8     public FactoryMode produceTurnOff(){
 9         return new TurnOff();
10     }
11 }

再对main 方法修改

1 public class Template {
2 public static void main(String[] args) {
3     AutoFactory af=new AutoFactory();
4     FactoryMode fm1=af.produceTurnOn();
5     FactoryMode fm0=af.produceTurnOff();
6     fm1.AutoOnOff();
7     fm0.AutoOnOff();
8     }
9 }

结果一致!

3,静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

先对普通工厂方法中的[工厂类]修改如[工程2:多个工厂方法模式]

 1 /*
 2  * 第三步:创建工厂类
 3  */
 4 class AutoFactory{
 5     public static FactoryMode produceTurnOn(){
 6         return new TurnOn();
 7     }
 8     public static FactoryMode produceTurnOff(){
 9         return new TurnOff();
10     }
11 }

再修改main()方法

1 public class Template {
2 public static void main(String[] args) {
3     FactoryMode fm1=AutoFactory.produceTurnOn();
4     FactoryMode fm0=AutoFactory.produceTurnOff();
5     fm1.AutoOnOff();
6     fm0.AutoOnOff();
7     }
8 }

 

posted on 2017-03-06 23:38  weizhang715  阅读(82)  评论(0)    收藏  举报

导航