OCP(开闭原则,Open - Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。对于一个已有的软件,如果需要扩展,应当在不需修改已有代码的基础上进行
DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。对不同层次的编程,高层次暴露给低层次的应当只是接口。而不是它的具体类
LoD(迪米特法则,Law of Demeter):只与你直接的朋友通信,而避免和陌生人通信
注:类(或模块)之间的通信越少,耦合度越低,从而便有利于对软件的宏观管理
工厂模式的意义
定义一个创建产品对象的工程接口,将实际创建工作推迟到子类当中,核心工厂类不在负责产品的创建,这样核心类成为一个抽象角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品
涉及到的角色
抽象工厂角色:是工厂方法模式的核心,与应用程序无关,任何在模式中创建的对象的工厂类必须实现这个接口
具体工厂角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象
抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口
具体产品角色:这个角色实现抽象产品角色所定义的接口
简单工厂模式与工厂方法模式
简单工厂模式是用来实例化目标类的静态类,但是不满足 OCP
工厂方法模式克服简单工厂模式的缺点(主要是满足OCP)而设计出来