设计模式六大原则的理解(一)
2014-05-10 22:58
281 查看
面向对象三大特征:“封装”,“继承”,“多态”码农们都能顺口念出,但设计模式的三大原则能准确说出的就不多了。这三大原则是“开放-封闭原则“,”里氏代换原则”和“依赖倒转的原则”。
开放---封闭原则:
软件实体可以扩展,但是不可以修改(当然错误是必须修改的,这里的修改常指需求改变、增加)。即对于开展是开放的,对于修改是封闭的。面对需求,对程序的改动是通过增加代码来完成的,而不是改动现有代码。
里氏代换原则
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类。而且他察觉不出父类和子类对象的区别。也就是说:在软件里面把父类替换为子类,程序的行为没有变化。
依赖倒转原则
抽象不应该依赖细节,细节应该依赖抽象。即针对接口编程,不要实现编程。高层模块不能依赖低层模块,两者都应该依赖抽象。
依赖倒转原则是面向对象的标志,用哪种语言编写程序不重要,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序的所有依赖关系都终止于抽象类或接口。那就是面向对象设计,反之那就是面向过程的设计。
这三大原则和面向对象三大特征的关系? 三大原则的实现就是基于三大特征而来。
PS:
C能不能面向对象?
答案是肯定的,OOP是一种思想,跟语言无关,只是新兴编程语言发明时候就考虑了对面向对象的支持,提供了相关关键字和语法。作为拥有指针,能写操作系统内核的语言,面向对象难不倒C。
Linux把所有的设备都抽象为文件,对所有的设备的操作都可以通过对“文件描述符”的读写来实现,而不需要去了解其实现细节。这就是一种完美的OO设计。
C可以使用struct来实现封装,通过函数指针来实现成员函数。只包含函数指针成员的struct,就是一个完美的抽象接口实现。一个struct包含另一个struct这就实现了继承。当然实际使用上是肯定没有C#,Java,C++那么方便的,但C永远有它们比不过的地方。
开放---封闭原则:
软件实体可以扩展,但是不可以修改(当然错误是必须修改的,这里的修改常指需求改变、增加)。即对于开展是开放的,对于修改是封闭的。面对需求,对程序的改动是通过增加代码来完成的,而不是改动现有代码。
里氏代换原则
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类。而且他察觉不出父类和子类对象的区别。也就是说:在软件里面把父类替换为子类,程序的行为没有变化。
依赖倒转原则
抽象不应该依赖细节,细节应该依赖抽象。即针对接口编程,不要实现编程。高层模块不能依赖低层模块,两者都应该依赖抽象。
依赖倒转原则是面向对象的标志,用哪种语言编写程序不重要,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序的所有依赖关系都终止于抽象类或接口。那就是面向对象设计,反之那就是面向过程的设计。
这三大原则和面向对象三大特征的关系? 三大原则的实现就是基于三大特征而来。
PS:
C能不能面向对象?
答案是肯定的,OOP是一种思想,跟语言无关,只是新兴编程语言发明时候就考虑了对面向对象的支持,提供了相关关键字和语法。作为拥有指针,能写操作系统内核的语言,面向对象难不倒C。
Linux把所有的设备都抽象为文件,对所有的设备的操作都可以通过对“文件描述符”的读写来实现,而不需要去了解其实现细节。这就是一种完美的OO设计。
C可以使用struct来实现封装,通过函数指针来实现成员函数。只包含函数指针成员的struct,就是一个完美的抽象接口实现。一个struct包含另一个struct这就实现了继承。当然实际使用上是肯定没有C#,Java,C++那么方便的,但C永远有它们比不过的地方。
相关文章推荐
- 对设计模式六大原则的理解
- 设计模式六大原则(3):依赖倒置原则 (讲的很清楚的,易理解)
- 对设计模式的理解(六大原则)
- 设计模式六大原则的理解
- 【iOS】快速理解 设计模式六大原则
- JAVA设计模式六大原则个人理解【上】
- 详解设计模式六大原则
- php部分---面向对象,设计模式(单例模式、工厂模式)、oop六大原则;
- 设计模式的六大原则
- 设计模式六大原则
- 设计模式 六大原则
- 设计模式六大原则(5):迪米特法则
- 设计模式六大原则
- (随记六)Android设计模式解析与实战_面对对象六大原则之加米特原则
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- 设计模式六大原则----------依赖倒置原则
- 设计模式六大原则
- 设计模式六大原则(2):里氏替换原则LSP(Liskov Substitution Principle)
- 设计模式六大原则5—迪米特原则
- C#之设计模式之六大原则(转载)