zy19982004-设计模式学习4:简单工厂模式

zy19982004--设计模式学习四:简单工厂模式

一.概念

     简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式。

 

二.实例分析

    现需要一个cpu,各大厂家都能生成,我们到底选哪家呢。

zy19982004-设计模式学习4:简单工厂模式

 

     CPU

Java代码  zy19982004-设计模式学习4:简单工厂模式
  1. package com.zzy.simpleFactory;  
  2. /** 
  3.  * CPU接口 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public interface CPU {  
  8.     public void work();  
  9. }  

 

     SamSungCPU

Java代码  zy19982004-设计模式学习4:简单工厂模式
  1. package com.zzy.simpleFactory;  
  2. /** 
  3.  * 三星CPU 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class SamSungCPU implements CPU{  
  8.   
  9.     @Override  
  10.     public void work() {  
  11.         System.out.println("三星CPU is working...");  
  12.     }  
  13.   
  14. }  

 

     SeagateCPU

Java代码  zy19982004-设计模式学习4:简单工厂模式
  1. package com.zzy.simpleFactory;  
  2. /** 
  3.  * 希捷CPU 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class SeagateCPU implements CPU{  
  8.   
  9.     @Override  
  10.     public void work() {  
  11.         System.out.println("希捷CPU is working...");  
  12.     }  
  13.   
  14. }  

 

     WDCPU

Java代码  zy19982004-设计模式学习4:简单工厂模式
  1. package com.zzy.simpleFactory;  
  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. }  

 

     CPUFactory

Java代码  zy19982004-设计模式学习4:简单工厂模式
  1. package com.zzy.simpleFactory;  
  2. /** 
  3.  * 简单工厂 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class CPUFactory {  
  8.     public static CPU createCPU(Company company) {  
  9.         CPU cpu = null;  
  10.         switch(company) {  
  11.             case WD :  
  12.                 cpu = new WDCPU();  
  13.                 break;  
  14.             case SamSung :  
  15.                 cpu = new SamSungCPU();  
  16.                 break;  
  17.             case Seagate :  
  18.                 cpu = new SeagateCPU();  
  19.                 break;  
  20.         }  
  21.         return cpu;  
  22.     }  
  23. }  
  24.   
  25. enum Company {  
  26.     WD, SamSung, Seagate  
  27. }  

 

     TestSimpleFactory

Java代码  zy19982004-设计模式学习4:简单工厂模式
  1. package com.zzy.simpleFactory;  
  2. /** 
  3.  * 测试类 
  4.  * @author eason 
  5.  * 
  6.  */  
  7. public class TestSimpleFactory {  
  8.     public static void main(String[] args) {  
  9.         CPU cpu = CPUFactory.createCPU(Company.WD);  
  10.         cpu.work();  
  11.     }  
  12. }  

 

三.简单工厂模式的产品等级与产品族

 

zy19982004-设计模式学习4:简单工厂模式

  1. 产品等级:同一个级别上的东西。比喻主板和cpu在电脑机箱里面就是平等的,它们就是一个级别的。
  2. 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如三星的CPU和三星的主板,组成一个家族。希捷的CPU和希捷芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。
  3. 简单工厂模式:用来生产同一等级结构中的任意产品。根据客户端传给的参数,简单工厂决定返回哪个产品给你。