设计原则与模式
软件设计的核心问题,可维护性和可复用性。
设计原则
(OCP)开-闭原则,软件实体应对扩展开放,对修改关闭,也就是屏蔽了修改对使用者的影响(简单工厂模式不支持开闭原则),实现开闭原则要尽量使用抽象,实质就是要尽量降低耦合性,封装可变性。可变性间不能混合。(基本原则)
(LSP)里氏代换原则,任何使用父类的地方都可以把父类替换为子类而不影响正常运行。(多态的使用)
(DIP)依赖倒转原则,要把依赖关系建立到抽象(接口、父类)上,不要依赖于实现(子类,实现类)。(避免类关系复杂,提高可扩展性),针对接口编程,推迟实现。
(ISP)接口隔离原则,使用多个专用接口替代单一接口。
(CARR)组合/聚合复用原则,使用组合或聚合关系,替代继承。
(LoD)迪米特法则(最少支持原则),一个对象或模块应该和其他对象和模块尽量少通信(依赖)。可以自己与自己通信(this),与自己的属性对象通信,与集合属性中的元素,与方法的参数对象通信,与自己创建的对象。
设计模式
工厂方法模式
当我们想获得一相关产品类的时候,创建抽象工厂类,通过抽象工厂的抽象方法返回抽象产品类,创建具体工厂类,实现抽象方法,返回具体产品类
单例模式
class ClassA{ //懒汉式单例模式,在多线程访问的时候,会造成不同步的问题
private static ClassA i=null;
public static ClassA newInstance(){ //在方法上加同步,影响效率,相比较饿汗式单例模式好点
if(i==null) i=new ClassA();
return i;
}
private ClassA(){}
}
MVC模式
观察者模式
状态模式
对象的行为依赖对象的状态
组合模式
要在Java中实现一颗树,就一定会用到组合模式
把树叶节点和树枝节点的共性取出来,通过Node屏蔽差异,同等处理
装饰模式
代理模式
适配模式
责任链模式
软件设计的核心问题,可维护性和可复用性。
设计原则
(OCP)开-闭原则,软件实体应对扩展开放,对修改关闭,也就是屏蔽了修改对使用者的影响(简单工厂模式不支持开闭原则),实现开闭原则要尽量使用抽象,实质就是要尽量降低耦合性,封装可变性。可变性间不能混合。(基本原则)
(LSP)里氏代换原则,任何使用父类的地方都可以把父类替换为子类而不影响正常运行。(多态的使用)
(DIP)依赖倒转原则,要把依赖关系建立到抽象(接口、父类)上,不要依赖于实现(子类,实现类)。(避免类关系复杂,提高可扩展性),针对接口编程,推迟实现。
(ISP)接口隔离原则,使用多个专用接口替代单一接口。
(CARR)组合/聚合复用原则,使用组合或聚合关系,替代继承。
(LoD)迪米特法则(最少支持原则),一个对象或模块应该和其他对象和模块尽量少通信(依赖)。可以自己与自己通信(this),与自己的属性对象通信,与集合属性中的元素,与方法的参数对象通信,与自己创建的对象。
设计模式
工厂方法模式
当我们想获得一相关产品类的时候,创建抽象工厂类,通过抽象工厂的抽象方法返回抽象产品类,创建具体工厂类,实现抽象方法,返回具体产品类
单例模式
class ClassA{ //懒汉式单例模式,在多线程访问的时候,会造成不同步的问题
private static ClassA i=null;
public static ClassA newInstance(){ //在方法上加同步,影响效率,相比较饿汗式单例模式好点
if(i==null) i=new ClassA();
return i;
}
private ClassA(){}
}
MVC模式
观察者模式
状态模式
对象的行为依赖对象的状态
组合模式
要在Java中实现一颗树,就一定会用到组合模式
把树叶节点和树枝节点的共性取出来,通过Node屏蔽差异,同等处理
装饰模式
代理模式
适配模式
责任链模式