设计模式主旨及原则

目录

 

1.什么是设计模式

2.设计模式与面向对象

3、软件设计的复杂性——变化

4.面向对象的设计原则:


1.什么是设计模式

每一个模式描述了一个在我们周边不断重复的世间及其解决方案,这样我们就能直接使用该方案而不必要重复造轮子。

2.设计模式与面向对象

向下:把握机器底层,从微观理解对象构造

封装、继承、多态

向上:如何将我们的世界抽象为程序代码

面向对象、组件封装、设计模式

3、软件设计的复杂性——变化

如何解决复杂性?

-》分解:不容易复用

-》抽象:容易复用

软件设计的金科玉律:复用!!!

4.面向对象的设计原则:

七大原则SOLIDCS

-》单一职责原则(The Single Responsibility Principle)
一个类有且仅有一个引起他变化的原因,不然就应该被拆分

-》开闭原则(The Open-Closed Principle)
对扩展开放,对修改关闭
类模块应该是可扩展的,但是不可修改。


接口和抽象类的区别
1.接口中的每个方法均没有实现,都是抽象方法;但抽象类中可以有具体的方法。
2.接口中的数据成员必须是常量,默认使用public static final 修饰,而抽象类中的数据成员可以是变量。
3.由于定义在接口中的方法都是抽象方法,所以接口中的方法可以省略abstract修饰符,但是抽象类中的抽象方法不可以省略abstract。
4.抽象类可以有构造方法,接口没有。
5.抽象类中的抽象方法访问类型可以是public ,protected和缺省,但接口中的抽象方法只能是public,默认是public abstract 类型。
6.一个类可以实现多个接口,但只能继承一个抽象类。
7.抽象类中可以有非抽象方法,但是有抽象方法的类一定是抽象类。

-》里式替换原则(The Liskov Substitution Principle)
子类可以扩展父类的方法,但不要改变父类原有的方法

-》接口隔离原则(The Interface Segregation Principle)
不应该强迫客户程序依赖它们不用的方法
接口应该小而完备

-》依赖倒置原则(The Dependence Inversion Principle)
高层模块(稳定)不应该依赖底层模块(变化),两者应该依赖抽象。
抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。

 

上面就是SOLID对应的五个原则

-》优先使用对象组合,而不是类继承
类继承通常为“白箱复用”,对象组合通常为“黑箱复用”
继承在某种程度上破坏了封装性,子类父类耦合度高。
而对象组合则只要求被组合的对象具有良好定义的接口。
 

-》封装改变点
使用封装来创建对象之间的分界层,让设计者可以在分界一侧进行修改,而不会对另一侧产生不良影响,从而

-》针对接口编程,而不是针对实现编程
不将变量类型声明为某个特定的具体类,而是声明为某个接口。
客户程序无需获知对象的具体类型,只需要知道对象所具有的接口。
减少系统中各部分的依赖关系,从而实现“高内聚、松耦合”的类型设计方案。


总结
开闭原则是总纲
里式替换原则不要破坏继承体系
依赖倒置原则 要面向接口编程
单一职责原则 实现类要职责单一
接口隔离原则 设计接口要精简单一
迪米特原则 降低耦合度
合成复用原则 优先使用组合或者聚合复用
 

发布了159 篇原创文章 · 获赞 41 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_37768971/article/details/102131858