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

    工厂模式的定义:
    定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法决定一个类的实例化延迟到其子类。

    类图如下:

    image

    通用的代码如下:

    //抽象产品类
    public abstract class Product {
        // 产品通用的方法.....
        public void method1(){
            
        }
        
        //抽象方法
        public abstract void method2();
    
    }
    //--------------------------------------产品类------------------------------------------------
    //具体类 1
    public class ConcreteProduct1 extends Product {
    
        
        @Override
        public void method2() {
            // 处理具体产品1的方法
    
        }
    
    }
    
    //具体产品类2
    public class ConcreteProduct2 extends Product {
    
        @Override
        public void method2() {
            //具体产品2的方法.....
    
        }
    
    }
    
    //-----------------------------------创建类------------------------------------------
    //抽象的创建类
    public abstract class Creator {
        //通过反射创建具体的产品类...
        public abstract <T extends Product> T  createProduct(Class<T> c);
    }
    
    //具体的抽象类
    public class ConcreteCreator extends Creator {
    
    
        @Override
        public <T extends Product> T createProduct(Class<T> c) {
            //产品类....
            Product product = null;
            
            if(product == null){
                try {
                    product = (Product) Class.forName(c.getName()).newInstance();
                }
                catch (Exception  e) {
                    e.printStackTrace();
                }
            }
            
            //返回.....
            return (T)product;
            
        }
    
    }
    
    //---------------------------------------------------------Client 类--------------------------------------------------------------------------
    public class Client {
    
        /** 
         * @Title: main 
         * @Description: 工厂类的Client
         * @param @param args    设定文件 
         * @return void    返回类型 
         * @throws 
         */
        public static void main(String[] args) {
            //工厂创建类
            Creator  creator = new ConcreteCreator();
            //生成具体产品类1
            Product  product = creator.createProduct(ConcreteProduct1.class);
            
            //继续业务处理
    
        }
    
    }

    简单工厂类

    把类图去掉抽象类 creator类,将ConcreteCreator 方法修改为静态即可。

  • 相关阅读:
    AFNetworking使用总结
    使用Attiny 85开发板制作BadUSB
    C# 按指定数量从前面或者后面删除字符串
    C# 获取打印机列表
    【解决】该任务映像已损坏或已篡改。(异常来自HRESULT:0x80041321)
    PowerShell 解锁使用浏览器下载的文件
    C#使用HttpHelper万能框架,重启路由器
    【解决】应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。
    Windows 7 IE11 F12 不能正常使用
    HTML5 图片上传预览
  • 原文地址:https://www.cnblogs.com/tjxwg/p/4056130.html
Copyright © 2011-2022 走看看