码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式---工厂模式---生产水果

时间:2016-04-24 09:47:24      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

设计模式---工厂模式

需要一个基本的抽象类:相当一个基本的工厂

需要若干个具体类:相当若干个产品

需要工具类:相当工厂中机器,用来选择不同的产品生产

需要主类:相当顾客所想的订单

主类 ----> 工厂类 ----> 产品类 ---> 产品具体类

老板根据顾客的订单,在工具堆中选择合适的,然后去工厂中生产适合的产品,返回给顾客

优势:能够在不修改原先的代码情况,增加所需的类与方法。

不足:会增多类文件的数量

 


接口:提供的内容,相当于协议,即外界使用此接口时,接口的内容是不允许外界对接口的内容进行修改,但是可以将接口的内容具体化,

        从代码的而言,接口类中的代码是 public static final的,静态且公有的


产品.java 接口类:协议

 

技术分享
 1 /**
 2  *
 3  * @author sows
 4  */
 5 public interface 产品 {
 6     
 7     void 产品类型();
 8     
 9     void 口味();
10     
11     void 包装形式();
12     
13 
14     @Override
15     String toString();
16 }
产品

产品的具体类型_苹果.java  产品的具体类型_草莓.java  产品的具体类型_香蕉.java  具体类:满足产品协议的产品实现

技术分享
 1 /**
 2  *
 3  * @author sows
 4  */
 5 public class 产品的具体类型_苹果 implements 产品 {
 6 
 7     private String  productManager;
 8     private String  chewingGum;
 9     private String  wrapper;
10     
11     @Override
12     public void 产品类型() {
13         productManager="苹果醋";
14     }
15 
16     @Override
17     public void 口味() {
18         chewingGum="酸酸的淡味";
19     }
20     
21     @Override
22     public void 包装形式() {
23         wrapper="采用塑料瓶的形式";
24     }
25     
26     public String toString(){
27         return "苹果"+"\t"+productManager+"\t"+chewingGum+"\t"+wrapper
28                 +"\n------------------------------------------------";
29     }
30 }
产品的具体类型_苹果
技术分享
 1 /**
 2  *
 3  * @author sows
 4  */
 5 public class 产品的具体类型_草莓 implements 产品 {
 6 
 7     private String  productManager;
 8     private String  chewingGum;
 9     private String  wrapper;
10     
11     @Override
12     public void 产品类型() {
13         productManager="草莓堆";
14     }
15 
16     @Override
17     public void 口味() {
18         chewingGum="草莓味";
19     }
20 
21     @Override
22     public void 包装形式() {
23         wrapper="透明矩形盒";
24     }
25 
26         public String toString(){
27         return "草莓"+"\t"+productManager+"\t"+chewingGum+"\t"+wrapper
28                 +"\n------------------------------------------------";
29     }
30 }
产品的具体类型_草莓
技术分享
 1 /**
 2  *
 3  * @author sows
 4  */
 5 public class 产品的具体类型_香蕉 implements 产品 {
 6 
 7     private String  productManager;
 8     private String  chewingGum;
 9     private String  wrapper;
10         
11     @Override
12     public void 产品类型() {
13         productManager="香蕉片";
14     }
15 
16     @Override
17     public void 口味() {
18         chewingGum="怪怪的味道";
19     }
20 
21     @Override
22     public void 包装形式() {
23        wrapper="薄膜装";
24     }
25     
26     public String toString(){
27         return "香蕉"+"\t"+productManager+"\t"+chewingGum+"\t"+wrapper
28                 +"\n------------------------------------------------";
29     }
30     
31 }
产品的具体类型_香蕉

工厂.java  

技术分享
 1 /**
 2  *
 3  * @author sows
 4  */
 5 public class 工厂 {
 6 
 7     public 产品 工具(String sows) {
 8 
 9         if (sows.equalsIgnoreCase(null)) {
10             return null;
11         } else if (sows.equalsIgnoreCase("苹果")) {
12             产品的具体类型_苹果 apple = new 产品的具体类型_苹果();
13             apple.产品类型();
14             apple.包装形式();
15             apple.口味();
16             return apple;
17         } else if (sows.equalsIgnoreCase("草莓")) {
18             产品的具体类型_草莓 ceo = new 产品的具体类型_草莓();
19             ceo.产品类型();
20             ceo.包装形式();
21             ceo.口味();
22             return ceo;
23         } else if (sows.equalsIgnoreCase("香蕉")) {
24             产品的具体类型_香蕉 ceo = new 产品的具体类型_香蕉();
25             ceo.产品类型();
26             ceo.包装形式();
27             ceo.口味();
28             return ceo;
29         }
30 
31         return null;
32     }
33 }
工厂

店铺.java

技术分享
 1 /**
 2  *
 3  * @author sows
 4  */
 5 public class 店铺 {
 6     public static void main(String[] args){
 7         工厂 sows=new 工厂();
 8         产品 ceo=sows.工具("苹果");
 9         System.out.println(ceo.toString());
10         
11         ceo=sows.工具("草莓");
12         System.out.println(ceo.toString());
13         
14         ceo=sows.工具("香蕉");
15         System.out.println(ceo.toString());
16     }
17 }
店铺


显示结果:

run:
苹果 苹果醋 酸酸的淡味 采用塑料瓶的形式
------------------------------------------------
草莓 草莓堆 草莓味 透明矩形盒
------------------------------------------------
香蕉 香蕉片 怪怪的味道 薄膜装
------------------------------------------------
成功构建 (总时间: 0 秒)

 

设计模式---工厂模式---生产水果

标签:

原文地址:http://www.cnblogs.com/sows/p/5426348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!