标签:
设计模式---工厂模式
需要一个基本的抽象类:相当一个基本的工厂
需要若干个具体类:相当若干个产品
需要工具类:相当工厂中机器,用来选择不同的产品生产
需要主类:相当顾客所想的订单
主类 ----> 工厂类 ----> 产品类 ---> 产品具体类
老板根据顾客的订单,在工具堆中选择合适的,然后去工厂中生产适合的产品,返回给顾客
优势:能够在不修改原先的代码情况,增加所需的类与方法。
不足:会增多类文件的数量
接口:提供的内容,相当于协议,即外界使用此接口时,接口的内容是不允许外界对接口的内容进行修改,但是可以将接口的内容具体化,
从代码的而言,接口类中的代码是 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