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

  • 相关阅读:
    web service
    常用的正则表达式
    xml
    sql helper
    sql server 表连接
    asp.net页面生命周期
    创建简单的ajax对象
    checkbox选中问题
    ES6之扩展运算符 三个点(...)
    Object.assign()的用法 -- 用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,返回目标对象
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2544189.html
Copyright © 2011-2022 走看看