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.解耦,高层模块孩子需要知道产品的抽象类,其他实现可以不用关心。

  • 相关阅读:
    【故障处理】ORA-12162: TNS:net service name is incorrectly specified (转)
    android studio 编程中用到的快捷键
    java时间格式串
    android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
    linux安装vmware
    x1c 2017 安装mint18的坑——grub2
    x1c2017 8G版 win linux的取舍纠结记录
    python的try finally (还真不简单)
    kafka+docker+python
    json文件不能有注释
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2544189.html
Copyright © 2011-2022 走看看