`
这些年
  • 浏览: 389927 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zy19982004--设计模式学习六:抽象工厂模式

阅读更多

一.概念

     抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确知道具体类。

 

二.实例分析

 

     CPU

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * CPU接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface CPU {  
  8.     public void work();  
  9. }  

 

     WDCPU/SamSungCPU/SeagateCPU类似,只贴出一个

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 西数CPU 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class WDCPU implements CPU{  
  8.   
  9.     @Override  
  10.     public void work() {  
  11.         System.out.println("西数CPU is working...");  
  12.     }  
  13.   
  14. }  

 

     Disk

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * CPU接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface Disk {  
  8.     public void write();  
  9. }  

 

     WDDisk/SamSungDisk/SeagateDisk类似,只贴出一个

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2.   
  3. public class WDDisk implements Disk {  
  4.   
  5.     @Override  
  6.     public void write() {  
  7.         System.out.println("西数硬盘 is working...");  
  8.     }  
  9.   
  10. }  

 

     AbstractFactory

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 抽象工厂接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface AbstractFactory {  
  8.     public CPU createCPU();  
  9.     public Disk createDisk();  
  10. }  

 

     WDFactory/SamSungFactory/SamSungFactory类似,只贴出一个

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 三星工厂 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class WDFactory implements AbstractFactory{  
  8.   
  9.     @Override  
  10.     public CPU createCPU() {  
  11.         return new WDCPU();  
  12.     }  
  13.   
  14.     @Override  
  15.     public Disk createDisk() {  
  16.         return new SamSungDisk();  
  17.     }  
  18. }  

 

     TestAbstractFactory

Java代码  收藏代码
  1. package com.zzy.abstractFactory;  
  2. /** 
  3.  * 测试类 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class TestAbstractFactory {  
  8.     public static void main(String[] args) {  
  9.         //三星工厂  
  10.         AbstractFactory factory = new WDFactory();  
  11.         //三星工厂生产的CPU  
  12.         CPU cpu = factory.createCPU();  
  13.         //三星工厂生产的硬盘  
  14.         Disk disk = factory.createDisk();  
  15.         cpu.work();  
  16.         disk.write();  
  17.     }  
  18. }  

 

三.抽象工厂模式的产品等级与产品族

  1. 抽象工厂:用来生产不同产品族的全部产品。
  2. 抽象工厂是应对产品族概念的,所以抽象工厂接口要能生产同一产品族中的所有产品。

四.简单工厂,工厂方法,抽象工厂的联系去区别

  • 从类的角度

          简单工厂:只有一个具体工厂类来创建一种基类的不同派生类。

          工厂方法:有多个派生于一个基类的具体工厂类,每个工厂类只生产一种基类的一个派生类。

          抽象工厂:只有一个工厂基类,其具体派生类生产相关基类的各一个派生类。

 

  • 从产品等级与产品族的角度

          简单工厂:生产同一等级结构中的任意产品。

          工厂方法:生产同一等级结构中的固定产品。

          抽象工厂:生产不同产品族的全部产品。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics