• 设计模式工厂


    简单工厂模式

    设计原则:遵循单一职责、违背开闭原则
    常用场景:需要在一堆产品中选择其中一个产品
    使用概率:99.99999%
    复杂度:低
    变化点:产品的种类
    选择关键点:一种产品是否可根据某个参数决定它的种类
    逆鳞:工厂类不能正常工作
    相关设计模式
    工厂方法模式:工厂方法模式是简单工厂模式的进一步抽象化,在这两者之间做选择,
    主要看将工厂进一步抽象化是否有必要,通常情况下,如果工厂的作用仅仅是用来制造产品,则没必要使用工厂方法模式。

    主要思想:
    1.主要运用继承 定义约束性接口
    2.实现接口 根据功效进行接口实现
    3.定义根据参数值不同实例化不同子类的工厂方法

    public interface SimpleInterface {
        public void dosomething();
    }
    public class SimpleImplementsA implements SimpleInterface {
    
        @Override
        public void dosomething() {
            System.out.println("A");
        }
    }
    public class SimpleImplementsB implements SimpleInterface {
        @Override
        public void dosomething() {
            System.out.println("B");
        }
    }
    public class SimpleFatory {
        private SimpleFatory() {
        }
    
    
        public static SimpleInterface produce(String type) {
            if ("A".equals(type)) {
                return new SimpleImplementsA();
            } else if ("B".equals(type)) {
                return new SimpleImplementsB();
            } else {
                return null;
            }
        }
    }

    工厂方法模式


    设计原则:遵循单一职责、依赖倒置、开闭原则
    常用场景:一种场景是希望工厂与产品的种类对客户端保持透明,给客户端提供一致的操作,另外一种是不同的工厂和产品可以提供客户端不同的服务或功能
    使用概率:60%
    复杂度:中低
    变化点:工厂与产品的种类
    选择关键点:工厂类和产品类是否是同生同灭的关系
    逆鳞:无
    相关设计模式
    抽象工厂模式:工厂方法模式与抽象工厂模式最大的区别在于,在工厂方法模式中,工厂创造的是一个产品,而在抽象工厂模式中,工厂创造的是一个产品族。


    主要思想:
    与简单工厂模式不同的是,防止获取实例的工厂方法因传入错误值等外部因素引起错误
    在工厂类中创建返回不同子类实例的方法
    相当于把n多同类型的类实例化方法,集中一下 放到一个类中方便查看、和管理等

    public class Factory {
        private Factory() {
        }
    
        public static SimpleInterface produceA(){
            return new SimpleImplementsA();
        }
    
        public static SimpleInterface produceB(){
            return new SimpleImplementsB();
        }
    }


  • 相关阅读:
    测试如何发挥更大的价值?聊聊测试左移和右移
    Cocos Creator性能调优
    跨域问题产生的原因和解决方法
    tornado部署
    tonado
    MySQL binlog
    grpc
    nextjs中的懒加载
    前端低代码-少写代码实现灵活需求
    MySQL中的锁
  • 原文地址:https://www.cnblogs.com/zhaojj/p/7763209.html
Copyright © 2020-2023  润新知