七大原则-开放-封闭原则

开闭原则通过新增代码,避免通过修改原有代码实现产品迭代
开闭原则要贯穿在软件开发的各个层级中,要利用在每一个方法中,由方法组成的类中,由功能密切的类组成的模块中,由相互依存的模块组成的项目中。

解决俩个问题:

  1. 新增业务需要修改原有代码
  2. 随着业务增加,判断语句的暴增问题
  3. 保持软件产品的稳定性
  4. 不影响原有测试代码的运行
先写个工厂接口,预知未来可能的变化,需要生产线方法,如下:

public interface IFactory {
    String prodLine();
}
满足客户1的工厂FactoryA实现IFactory,生产产品A,如下:

public class FactoryA implements IFactory{
    @Override
    public String prodLine() {
        return "产品A";
    }
}
对于客户1中的代码:

public class Client1 {
    public static void main(String args[]) {
        System.out.println("我订购并收到产品:"+order());
    }

    private static String order(){
        IFactory factory = new FactoryA();
        return factory.prodLine();
    }
}
客户1中持有工厂接口IFactory的引用,指向其实现类,
运行之后,可以满足客户1的需求:

 我订购并收到产品:产品A
现在公司需要拓展业务满足客户2的需求,只需添加一个工厂接口IFactory的实现类,生产B产品,如下:

public class FactoryB implements IFactory {

    @Override
    public String prodLine() {
        return "产品B";
    }

}
客户B中的代码

public class Client2 {
    public static void main(String args[]) {
        System.out.println("我订购并收到产品:"+order());
    }

    private static String order(){
        IFactory factory = new FactoryB();
        return factory.prodLine();
    }
}
运行后,可以满足客户B的需求


我订购并收到产品:产品B
这样相当于公司为每一位客户,私人订制了一个工厂,专门生产其所需要的产品,丝毫不受生产其他产品的影响,而且是保密生产,客户2所需的产品B,对于客户1是不可见的,绝对的客户利益至上。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 关于设计模式六大设计原则的资料网上很多,但感觉很多地方解释地都太过于笼统化,特此再总结一波。 优化第一步-单...
    ghroost阅读 1,124评论 0 5
  • 目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...
    加油小杜阅读 739评论 0 1
  • 转载标注声明:http://www.uml.org.cn/sjms/201211023.asp 目录:[设计模式六...
    Bloo_m阅读 737评论 0 7
  • 设计模式六大原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类...
    viva158阅读 780评论 0 1
  • 1.选择适合于自己的深度工作法 上个世纪80年代,艾萨克森因个人能力出色被称作“美国最优秀的杂志记者之一”...
    热带不忧郁阅读 261评论 0 2