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 方法修改为静态即可。

  • 相关阅读:
    记录一下自己的洛谷的题解
    初学java 学生管理系统——v0002版本
    初学java 学生管理系统——v0001版本
    Redis守护进程作用+数据类型
    java实现发送短信验证码
    Kali入侵入门版笔记!!!
    2020实现ssh公网外联和外网远程穿透以及内网穿透防火墙
    监控键盘和鼠标记录内容和截屏,更新版本2.0,增加了Linux服务端!!!
    Git管理软件开发项目入门版
    2020年Windows下开机自动执行最强
  • 原文地址:https://www.cnblogs.com/tjxwg/p/4056130.html
Copyright © 2011-2022 走看看