• 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. }  
  • 相关阅读:
    容器环境的JVM内存设置最佳实践
    K8S基于ingress-nginx实现灰度发布
    基于ambassador实现K8S灰度发布
    Nginx配置中一个不起眼字符"/"的巨大作用,失之毫厘谬以千里
    springboot之jackson的两种配置方式
    CentOS7清理磁盘空间
    主机磁盘满了,却查不到大文件占用
    【数据库-MySql】开启事件 event_scheduler
    Jenkins自动化构建vue项目然后发布到远程服务器
    CentOS 7 使用NVM管理nodejs
  • 原文地址:https://www.cnblogs.com/hoobey/p/5294408.html
Copyright © 2020-2023  润新知