zoukankan      html  css  js  c++  java
  • Simple Factory (简单工厂模式)


    • 简单工厂模式不是23种设计模式之一,简单工厂模式属于创建型模式
    • 又叫做静态工厂方法(Static Factory Method)
    • 简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

     

    角色:

     

       抽象产品角色(Product) :

              是所有对象的父类,它负责描述所有实例所共有的公共接口。

     

       具体产品角色(ConcreteProduct) :

              所有创建的对象都是充当这个角色的某个具体类的实例,实现了Product接口。

     

       工厂类角色(Creator) :

              简单工厂模式的核心,是创建所有实例的内部逻辑,可被外界直接访问(因为里面有一个静态方法),创建所需产品的对象。

     

     

    代码实现:

     

    1.Product.java

     

    [java] view plain copy
    1. package com.simplefactory ;  
    2.   
    3. // 定义一个抽象产品角色  
    4. public interface Product  
    5. {  
    6. }  

     

    2.ConcreteProductA.java

     

    [java] view plain copy
    1. package com.simplefactory ;  
    2.   
    3. //具体产品角色A  
    4. public class ConcreteProductA implements Product  
    5. {  
    6. }  

     

    3.ConcreteProductB.java

     

    [java] view plain copy
    1. package com.simplefactory ;  
    2.   
    3. //具体产品角色B  
    4. public class ConcreteProductB implements Product  
    5. {  
    6. }  

     

    4.Creator.java

    [java] view plain copy
    1. package com.simplefactory ;  
    2.   
    3. //工厂类角色  
    4. public class Creator  
    5. {  
    6.     public static Product methodTest(String str)  
    7.     {  
    8.         if ("A".equals(str))  
    9.         {  
    10.             //这里可做好多事  
    11.             return new ConcreteProductA() ;  
    12.         }  
    13.   
    14.         else if ("B".equals(str))  
    15.         {  
    16.             return new ConcreteProductB() ;  
    17.         }  
    18.   
    19.         return null ;  
    20.     }  
    21. }  

    5.Client.java

    [java] view plain copy
    1. package com.simplefactory ;  
    2.   
    3. public class Client   
    4. {  
    5.     public static void main(String[] args)  
    6.     {  
    7.         Product product = Creator.methodTest("A") ;  
    8.         System.out.println(product.getClass().getName()) ;  
    9.   
    10.         Product product2 = Creator.methodTest("B") ;  
    11.         System.out.println(product2.getClass().getName()) ;  
    12.     }  
    13. }  
  • 相关阅读:
    HDU 1009 FatMouse' Trade
    python正则表达式
    Python学习week5
    Python学习week4
    Python学习week3
    Python学习week2
    Python学习week1
    生活的艰辛(最小割,最大密度子图)
    最大获利(最小割,最大权闭合图,最大密度子图)
    最大密度子图
  • 原文地址:https://www.cnblogs.com/hoobey/p/5294408.html
Copyright © 2011-2022 走看看