面向对象设计原则(一共八种) C++设计模式(一共23种)

==================================================================

面向对象设计原则(一共八种) C++设计模式(一共23种)

==================================================================

其中理解八种设计原则,比理解23具体的设计模式更加的重要。在进在学习这方面的知识点,但是感觉其中有些部分第一遍听的不是懂,所以在这里做一下笔记,在以后的日子里面慢慢的加深理解,估计还要在看几遍。说实话,看这个需要一定的代码量和功底,但是学习过程中,明显看到自己还有一些不是那么的理解,加油。后面没有写完的部分,有空继续补充,心急吃不了热豆腐,先提前看一下设计模式部分,有助于理解怎么设计和写代码。

代码复用(C++面向对象是指 编译层面(单位的)的);而不是指代码的粘贴复制。


重新认识面向对象

>理解隔离变化

·从宏观层面来看,面向对象的构建方式更能适应软件的变化,

能将变化所带来的影响减为最小

>各司其职

扫描二维码关注公众号,回复: 1951048 查看本文章

·从微观层面来看,面向对更强调各个类的“责任\"

·由于需求变化导致的新增天=个应该影响原来类型的实现

是所谓各负其责

>对象是什么?

·从语言实现层面来看,对象封装了代码和数据。

·从规格层面讲,对象是一系列可被使用的公共接口。

·从概念层面讲,对象是某种拥有责任的抽象。


面向对象设计原则(一共八种)


面向对象设计原则(1)

依赖倒置原则(DIP)

·高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定)。

·抽象(稳定)不应该依赖于变化),实现细节应该依赖于抽象(稳定)。

面向对象设计原则(2)

开放封闭原则(OCP)

·对扩展开放,对更改封闭。

·类模块应该是可扩展的,但是不可修改。

面向对象设计原则(3)

单一职责原则(SRP)

·一个类应该仅有一个引起它变化的原因。

·变化的方向隐含着类的责任。

面向对象设计原则(4)

Liskov 替换原则(LSP)

·子类必须能够替换它们的基类(IS-A)。

·继承表达类型抽象。

面向对象设计原则(5)

接口隔离原则(ISP)

·不应该强迫客户程序依赖它们不用的方法。

·接口应该小而完备。

面向对象设计原则(6)

优先使用对象组合,而不是类继承

·类继承通常为“白箱复用”,对象组合通常为“黑箱复用”

·继承在某种程度上破坏了封装性,子类父类耦合度高。

·而对象组合则只要求被组合的对象具有良好定义的接口,

度低。

面向对象设计原则(7)

封装变化点

·使用封装来创建对象之间的分界层,让设计者可以在分界的

一侧进行修改,而不会对另一侧产生不良的影响,从而实现层

次间的松耦合。

 

针对接口编程,而不是针对实现编程

·不将变量类型声明为某个特定的具体类,而是声明为某个接口。

·客户程序无需获知对象的具体类型,只需要知道对象所具有的

接口。

·减少系统中各部分的依赖关系,从而实现“高内聚、松耦合”

的类型设计方案。

面向接口设计

产业强盛的标志

接口标准化!

将设计原则提升为设计经验

1.设计习语Design Idioms

·Design Idioms 描述与特定编程语言相关的低层模式,技巧,

惯用法。

2.设计模式 DesignPatterns

·Design Patterns主要描述的是“类与相互通信的对象之间的组

织关系,包括它们的角色、职责、协作方式等方面。

3.架构模式Architectural Patterns

·Architectural Patterns描述系统中与基本结构组织关系密切的

高层模式,包括子系统划分,职责,以及如何组织它们之间关

系的规则。

C++设计模式(一共23种)

注:其中的红线圈出来为稳定部分,蓝线圈出来为变化部分

组件协作:(晚绑定, 框架和应用程序之间松耦合)

<1>·TemplateMethod    模板模式  

 模式定义:定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。


个人理解: 稳定里面有变化,稳定(非虚函数),不稳定(虚函数,让子类继承重写,局部的的功能)

 

 

 

<2>·Strategy  策略模式

模式定义: 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。



<3>·Observer/Event     观察者/事件模式  (第一遍没有听的很懂,555……)

模式定义: 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

扩展理解:Observer模式是基于事件的UI框架中非常常用的设计模式,也是MVC模式的一个重要组成部分。【【核心】抽象的通知依赖关系  】

 

单一职责:

<4>·motivation装饰模式

模式定义: 动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码&减少子类个数)。

个人理解:


<5>·Bridge

模式定义:

个人理解:

 

对象创建:

<6>·FactoryMethod

<7>·AbstractFactory

<8>·Prototype

<9>·Builder

对象性能:

<10>·Singleton.

<11>·Flyweight·

接口隔离:·

<12>·Facade

<13>·Proxy

<14>·Mecdiator·

<15>.Adapter

状态变化:

<16>·Memento

<17>·State

数据结构:

<18>·IComposite

<19>·Iterator

<20>·Chain of

<>.Resposibility

行为变化:

<>.command

<>·Visitor

领域问题:

<>·Interpreter

重构关键技法

静态->动态

早绑定-〉晚绑定

继承->组合

编译时依赖->运行时依赖

紧耦合->松耦合


 


猜你喜欢

转载自blog.csdn.net/qq_33154343/article/details/80764697
今日推荐