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

  • 相关阅读:
    windows上phpstudy配置memcache
    获取全站详情链接,并输出为txt文本
    Linux 宝塔面板免费版开启 waf 防火墙的方法
    where条件多种情况
    网站加https
    git常用命令
    缓存
    Stream转换成byte[] 、将 byte[] 转成 Stream 、Stream和文件的转换、从文件读取 Stream
    C#发送邮件
    Ref和Out的区别
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2544189.html
Copyright © 2011-2022 走看看