
目录
面向对象设计模式理解
面向对象的思维模式
抽象思维层面理解面向对象
面向对象的接口
面向对象设计原则
一.依赖倒置原则(DIP)
二.开放封闭原则(OCP)
三.单一职责原则(SRP)
四.Liskov替换原则(LSP)
五.接口隔离原则(ISP)
六.优先使用对象组合,而不是类继承
七,封装变化点
八.针对接口编程而不针对实现编程
C++作为一门面向对象语言(OOP),面向对象的三大特性是:封装、继承、多态
这三个特性是是面向对象的底层模式,这里介绍的主要是面向对象的设计模式。
面向对象设计模式的关键需求就是:复用
和面向过程不同,面向对象最表面的理解就是把所有程序分解、划分从一个个对象来使用。
但是更为重要的是面向对象的思维模式
底层思维: 向下,把握机器底层从微观理解对象构造
抽象思维:向上,将我们周围的世界抽象为代码逻辑
由于需求的不断变化会造成代码逻辑复用的困难性
关于多态和继承的介绍请看
C++认知继承_Booksort的博客-CSDN博客
C++多态知识点深入了解_Booksort的博客-CSDN博客
在面向对象的系统种,接口是基本组成部分。对象只有通过它们的接口才能与外部交流,如果不通过对象的接口就无法知道对象的任何事情,也无法请求对象做任何事情。
对象接口与其功能实现是分离的,不同对象可以请求做不同的实现,两个具有相同接口的对象可以有完全不同的实现。
1.高层模块的稳定性不应该依赖低层模块的变化,二者都因该依赖于抽象的稳定
当一个UI类要依赖于(继承)其中元件的实现的类时,这个是不稳定的,当增加一个元件或者修改一个元件的实现方式,就会造成UI类的变化,是非常不稳定的设计,UI类与那些元件类都应该依赖于一个稳定的抽象类,利用多态的方式去实现元件的展示
2.抽象的稳定性不应该依赖于实现的细节,实现的细节会变化,实现的细节应该依赖于抽线的稳定
抽象类中不能去调用一个子类的对象,子类对象发生变换后,抽象的类就会发生变化,抽象类应该具有稳定性
一个类想要增加该类的功能是允许的,但是想要修改本身就存在的功能是不允许的
在项目中,一个类应该就有一种职责,即一种功能,就是说类的成员函数应该都是为了实现一种功能,而不是说一个类种有横夺成员函数,可以实现各种不同方向上的功能
所有需要父类的地方,子类都能够传过去进行替换。防止子类中调用父类的方法时,就直接报错/抛异常(防止子类无法调用父类的方法)
不要把不必要、客户不会使用的方法提供出去,如果用户使用了,但是后期被修改了,那么客户抽象也要修改