C++设计模式之导读

设计模式概述
目标:高内聚低耦合
核心思想: 隔离变化,封装变化(抽象)
面向抽象类编程,客户端和服务器的解耦合
用抽象解耦具体实现,将程序中可能变化的部分封装到具体类中,使用抽象技术,解藕程序和具体类的实现。这样,当未来的需求发生变化,我们就可以在不改动核心程序流程的情况下,扩展程序的实现。所谓的使用抽象技术也就是遵循面向接口编程原则
变化:客户需求的变化,技术平台的变化,开发团队的变化,环境市场的变化
分类:创建型模式:创建对象, new之间的解耦
(五种:工厂模式,抽象工厂模式,建造者模式,原型模式,单例模式)
结构型模式:类与类之间的关系,对象与对象之间的关系,对象之间的解耦
(类和类之间的关系有:实现 依赖 关联 聚合 组合 泛化)
(七种模式:代理模式、装饰者模式、适配器模式、桥接模式、组合模式、外观模式、享元模式)
行为型模式:类怎么写,对象怎么写
(十一种模式:模板方法模式、命令模式、责任链模式、策略模式、中介者模式、观察者模式、备忘录模式、访问者模式、状态模式、解释器模式)

工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中;
抽象工厂模式:提供一个创建一系列相关或者相互依赖的接口,无需指定具体的类;
建造者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示;
原型模式:原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象;
单例模式:是保证一个类仅有一个实例,并提供一个访问他的全局访问点;

代理模式:就是为其他对象提供一种代理以控制对中个对象的访问
装饰器模式:动态的给一个对象添加一些额外的功能
适配器模式:将一个类的接口转换成用户希望的另一个接口,使得原本不兼容的接口能一起工作
桥接模式:是将抽象部分与实际部分相分离,使他们可以独立的变化
组合模式:是将对象组合成树形结构以表示部分-整体的层次结构
外观模式:是为子系统中的一组接口提供一个一致的界面
享元模式:以共享的方式高效的支持大量的组粒度的对象

模板方法模式:使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤
命令模式:是将一个请求封装成为一个对象,从而使你可以用不同的请求对客户端进行参数化
责任链模式:在该模式里,很对对象由每一个对象对其下一个对象的引用,而连起来的一个链
策略模式:就是准备一组算法,并将每一个算法封装起来,使得他们可以互换
中介者模式:就是定义一个中介对象来封装系列对象之间的交互
观察者模式:定义对象之间的一种一对多的依赖关系,当一个对象的状态发生变化时,通知其他类做出相应的变化
备忘录模式:是在不破坏类封装的前提下,捕获一个对象的内部状态,并且在该对象之外保存这个状态
访问者模式: 是表示一个作用于某对象结构中的各个元素的操作,它使你可以在不改变各元素的前提下定义作用于这些元素的操作
状态模式:就是对象的行为,依赖他所处的状态
解释器模式:定义一个简单的语法,解释这些句子

设计模式的原则:
开放封闭原则:类的改变是通过增加代码实现的,而不是修改源码(银行业务员办理)
依赖倒转原则:依赖于抽象,而不是依赖于具体的实现,也就是针对接口编程
高层模块(稳定)不应该依赖于底层模块(变化),二者都应该依赖于抽象(稳定);
抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定);
接口隔离原则:类之间的依赖关系应该建立在最小的接口上
里氏代换原则:任何基类出现的地方,子类一定也可以出现;
继承的优缺点:
优点:代码共享,提高复用性
提高代码的拓展性
缺点:
继承的侵入式的,拥有父类的属性和方法
父类和子类的耦合度太高了
实现:将父类定义成抽象类,子类来实现
合成复用原则:能用组合就不要用继承
迪米特法则:一个类尽量减少与其他的关系,最少知识原则

创建型模式:
工厂设计模式:作用:封装对象的创建,解耦new创建对象的耦合度
分类:简单工厂模式,工厂模式,抽象工厂模式
简单工厂模式:一个工厂方式,依据传入的参数,生成对应的对象
工厂模式:将工厂提取成一个抽象类,具体生成什么产品由子类决定
抽象工厂:为创建一组相关或者相互依赖的对象提供的一个借口

单例模式:保证为一个类只生成唯一的一个实例对象,也就是说,在整个程序空间中,该类只存在一个实例对象
单例的步骤:1、构造函数私有化
2、定义一个全局的静态方法
3、在类中定义一个静态指针
分类:懒汉式和饿汉式
懒汉式:线程不安全,延迟初始化
饿汉式:线程安全,但是容易产生垃圾
一般解决方法:上锁或者用静态局部变量
七种实现方法:1、饿汉式 2、懒汉式(线程不安全) 3、懒汉式(线程安全)
4、双重检查模式 5、静态内部类单例模式 6、枚举单例 7、容器单例

结构型模式:
适配器模式:将一个类的接口转化成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那些类也可以一起工作
分类:类适配器
对象适配器
外观模式:定义一个统一的接口,用来访问子系统的一群接口,外观模式定义了一个高层接口,让子系统更容易使用

你可能感兴趣的:(C++)