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

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

解决俩个问题:

  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是不可见的,绝对的客户利益至上。

你可能感兴趣的:(七大原则-开放-封闭原则)