简单工厂设计模式,也就是静待工厂


场景,最近小米6很火啊,我也是小米的粉丝,就拿小米6来说,有黑色,白色,蓝色,三种非常亮的颜色。


先来代码,然后有疑惑,最后解释。


简单工厂设计模式有一个类是抽象类,是黑色,白色,蓝色手机的父类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
  * 小米手机抽象类
 
  * @author sdc
  *
  */
public  abstract  class  XiaoMiProduction {
 
     /**
      * 生产小米6的方法
      */
     public  abstract  void  createXiaoMi6();
     
}


蓝色手机生产类。

1
2
3
4
5
6
7
8
9
public  class  XiaoMi6Blue  extends  XiaoMiProduction{
 
     @Override
     public  void  createXiaoMi6() {
         // TODO Auto-generated method stub
         System.out.println( "生产亮蓝版本小米6" );
     }
 
}


白色手机生产类。

1
2
3
4
5
6
7
8
9
10
11
12
package  com.test4;
 
public  class  XiaoMi6White  extends  XiaoMiProduction{
 
     @Override
     public  void  createXiaoMi6() {
         // TODO Auto-generated method stub
         System.out.println( "生产亮白版本小米6" );
     }
 
     
}


黑色手机生产类:

1
2
3
4
5
6
7
8
9
public  class  XiaoMi6Black  extends  XiaoMiProduction{
 
     @Override
     public  void  createXiaoMi6() {
         // TODO Auto-generated method stub
         System.out.println( "生产亮黑版本小米6" );
     }
 
}


工厂类产生,生产小米6的工厂类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
  * 生产小米6的工厂
 
  * @author sdc
  *
  */
public  class  XiaoMi6Factory {
 
     // 蓝色
     private  static  final  String blule =  "blue" ;
 
     // 黑色
     private  static  final  String black =  "black" ;
 
     // 白色
     private  static  final  String white =  "while" ;
 
     /**
      * 静态工厂方法
      * @param colour
      * @return
      */
     public  static  XiaoMiProduction createXiaoMi6(String colour) {
         XiaoMiProduction xmP =  null ;
 
         switch  (colour) {
         case  black:
             xmP =  new  XiaoMi6Black();
             break ;
         case  blule:
             xmP =  new  XiaoMi6Blue();
             break ;
         case  white:
             xmP =  new  XiaoMi6White();
             break ;
         }
         return  xmP;
     }
 
}


说明:

生产哪一种颜色的手机,有你给传入到工厂类里的参数决定的,这个静态方法会返回给你一个具体的生产类。用这个生产类来去调用具体的业务逻辑。


角色划分:

抽象产品角色:就是上文提到的XiaoMiProduction这个抽象类,是那父类,可以是接口也可以是抽象类。

具体产品角色:就是生产三种颜色的手机类,具体的业务逻辑。

工厂角色:就是XiaoMi6Factory这个类,作用就是生产具体的产品的类,里面提供一个静态方法,提供给外部调用。