zoukankan      html  css  js  c++  java
  • 工厂模式【构建模式】

    工厂模式

    Define an interface for creating object, but let subclass decide which to instantiate.
    Factory method lets a class defer instantiation to subclass.
    定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到子类。
    

    反射工厂

    @Slf4j
    public class ReflectFactory {
        /**
         *  简单的反射工厂类
         *
         * created by ZXD at 23 Dec 2018 T 11:03:42
         * @param clz
         * @return
         */
        public static final <T> T create(Class<T> clz) {
            try {
                return clz.getDeclaredConstructor().newInstance();
            } catch (final Exception e) {
                log.error(clz.getName(), e);
                return null;
            }
        }
    }
    

    实例工厂

    • 将具体工厂类根据产品细化
    public class InstanceFactory {
    
        @Test
        public void all() {
            FruitFactory factory = new AppleFactory();
            Fruit fruit = factory.create();
            assertEquals("apple", fruit.name());
    
            factory = new BananaFactory();
            fruit = factory.create();
            assertEquals("banana", fruit.name());
    
            factory = new PearFactory();
            fruit = factory.create();
            assertEquals("pear", fruit.name());
        }
    }
    
    // 1)抽象产品类:定义产品的共性
    interface Fruit {
        String name();
    }
    
    // 2)工厂接口
    interface FruitFactory {
        Fruit create();
    }
    
    // 3)具体产品类:定义产品的特性
    class Apple implements Fruit {
        @Override
        public String name() {
            return "apple";
        }
    }
    
    class Banana implements Fruit {
        @Override
        public String name() {
            return "banana";
        }
    }
    
    class Pear implements Fruit {
        @Override
        public String name() {
            return "pear";
        }
    }
    
    // 4)具体的实例工厂类
    class AppleFactory implements FruitFactory {
        @Override
        public Apple create() {
            return new Apple();
        }
    }
    
    class BananaFactory implements FruitFactory {
        @Override
        public Banana create() {
            return new Banana();
        }
    }
    
    class PearFactory implements FruitFactory {
        @Override
        public Pear create() {
            return new Pear();
        }
    }
    
  • 相关阅读:
    浅析数据库安全技术
    本站快捷付款方式
    VMware Workstation 官方正式版及激活密钥
    Win10真正好用之处
    我眼中的CentOS 下 安全策略
    美团
    Tomcat connector元素常用配置(最大连接数等)
    9.22面经:
    9.7
    合并两个有序数组为一个新的有序数组
  • 原文地址:https://www.cnblogs.com/zhuxudong/p/10163652.html
Copyright © 2011-2022 走看看