zoukankan      html  css  js  c++  java
  • 设计模式之禅工厂模式

    工厂模式:

      define an interface for creating an object, but let sub classes decide which class to instantiate.factory method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类、工厂方法使一个雷的实例化延迟到了子类)

    模版:

     

     //抽象产品类
    
      public abstract class Product {
    
        //产品类的公公方法
    
        public  void method1(){
    
          //逻辑实现
    
        }
    
     
    
        public abstract void method2();
    
      }
    
       //具体产品
    
      public class ConcreteProduct1 extends Product {
    
        public void method2(){
    
          //业务逻辑处理
    
        }
    
      }
    
      
    
      public class ConcreteProduct2 extends Product {
    
        public void method2(){
    
          //业务逻辑处理
    
        }
    
      }
    
      //抽象工厂(定义继承,向上转型,去掉则转化为简单工厂模式)
    
      public abstract class Creator {
    
        public abstract <T extends Product> T createProduct(Class<T> c);
    
      }
    
      //具体工厂
    
      public class concreteCreator extends Creator {
    
        public <T extends Product> T createProduct(Class<T> c){
    
          Product product = null;
    
          try {
    
            product =(Product) Class.forname(c.getName()).newInstance();
    
          }catch(Exception e){
    
            //异常处理
    
          }
    
          return (T) product;
    
        }
    
      }
    
      //场景
    
      public class Client {
    
        public static void main(String[] arg){
    
          Creator creator = new ConcreteCreator();
    
          Product product = creator.createProduct(ConcreteProduct1.class);
    
          //继续处理
        }
    
      }

      优点:1.良好的封装性,代码结构清晰;2.屏蔽产品类。3.解耦,高层模块孩子需要知道产品的抽象类,其他实现可以不用关心。

  • 相关阅读:
    堆的创建、优先队列、topk、堆排序C语言实现
    HTTPS加密原理
    go shard map实现
    Python进程间通信
    TCP 半连接队列和全连接队列
    WireShark过滤语法
    TCP拥塞机制
    【企业管理实务系列】低值易耗品管理办法
    CV之Face Change:基于人工智能实现国内众多一线美女明星换脸(基于Face++输出4*106个特征点定位+融合代码、deepfake技术)
    【转发】农行银企直联XML对接socket SAP EPIC
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2544189.html
Copyright © 2011-2022 走看看