6.java设计模式(读书笔记)简单工厂模式、工厂方法模式、抽象工厂模式

参考:

简单工厂模式和工厂方法模式:http://blog.csdn.net/jason0539/article/details/23020989

抽象工厂模式:http://blog.csdn.net/jason0539/article/details/44976775

抽象工厂模式与工厂方法模式的区别:http://blog.csdn.net/liruikqn/article/details/12888511

百度百科(感觉区分工厂方法和抽象工厂模式有点问题...)

http://baike.baidu.com/link?url=lJAWWdHY5CeRkiqfvim7Q4sWUvjOR4SlszIiotxzAfZWMDX6_FdfHdjMtRpRSLm2D54R98CkUYKcYfSSkXnBuYXqMdKcX-wlO1H1cXI8IOWTX0gNIxhbvnSNFMssaEwW

工厂模式可以分为3类:但其实简单工厂模式可以算作工厂方法模式

 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 

工厂模式可以分为3类:

1)简单工厂模式(Simple Factory) 
2)工厂方法模式(Factory Method) 
3)抽象工厂模式(Abstract Factory) 

我的理解:

简单工厂模式:

Sample320和Sample523都实现了ISample 接口,或者继承自ISample类

public  class  Factory{
     public  static  ISample creator( int  which){
         if  (which== 1 )
             return  new  Sample320();
         else  if  (which== 2 )
             return  new  Sample523();
     }
}

工厂方法模式:

简单工厂模式是把产品抽象成一个接口(320和523都是bwm)。

工厂方法模式就是在简单工厂模式的基础上把工厂也抽象一下。(总公司只建不同的厂(分别生成320.523)的实例,具体生成bwm车交给更下一级的工厂去实现)

产品类:

  1. abstract class BMW {  
  2.     public BMW(){  
  3.           
  4.     }  
  5. }  
  6. public class BMW320 extends BMW {  
  7.     public BMW320() {  
  8.         System.out.println("制造-->BMW320");  
  9.     }  
  10. }  
  11. public class BMW523 extends BMW{  
  12.     public BMW523(){  
  13.         System.out.println("制造-->BMW523");  
  14.     }  
  15. }  

创建工厂类:

  1. interface FactoryBMW {  
  2.     BMW createBMW();  
  3. }  
  4.   
  5. public class FactoryBMW320 implements FactoryBMW{  
  6.   
  7.     @Override  
  8.     public BMW320 createBMW() {  
  9.   
  10.         return new BMW320();  
  11.     }  
  12.   
  13. }  
  14. public class FactoryBMW523 implements FactoryBMW {  
  15.     @Override  
  16.     public BMW523 createBMW() {  
  17.   
  18.         return new BMW523();  
  19.     }  
客户类:

  1. public class Customer {  
  2.     public static void main(String[] args) {  
  3.         FactoryBMW320 factoryBMW320 = new FactoryBMW320();  
  4.         BMW320 bmw320 = factoryBMW320.createBMW();  
  5.   
  6.         FactoryBMW523 factoryBMW523 = new FactoryBMW523();  
  7.         BMW523 bmw523 = factoryBMW523.createBMW();  
  8. //我的理解
  9. BMW bwm523 = new FactoryBMW523().createBMW(); 
  10. BMW bwm320 = new FactoryBMW320().createBMW(); 
  11.     }  
  12. }  

抽象工厂模式:

每个具体工厂可以生产多种产品就是抽象工厂模式,如果只能生产一种产品就是工厂方法模式。

http://blog.csdn.net/liruikqn/article/details/12888511




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值