• 工厂模式【构建模式】


    工厂模式

    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();
        }
    }
    
  • 相关阅读:
    回来了
    【Docker】Docker学习笔记:shipyard使用
    【Docker】Docker学习笔记:安装部署
    【LVS】LVS用windows作为realserver的设置方法
    【linux常用命令】linux命令工具基础
    【linux工具】crontab
    【开源软件】windows环境下libcurl编译
    【工作笔记】CPU亲和性
    【转】多线程or多进程
    【学习笔记】git常用命令
  • 原文地址:https://www.cnblogs.com/zhuxudong/p/10163652.html
Copyright © 2020-2023  润新知