设计模式就是为了解决某类重复出现的问题而出现一套成功或者有效的解决方案。
即代码复用、让人更容易理解、可靠性。
设计模式的类型总共分为:3大类、23种具体设计模式
作用:
1.以一种标准的形式工广大开发人员使用,编于学习和交流,使新的开发者更容易理解设计思路,
实现可维护性。
2.可重用性,可复用性,避免重复性工作。
3.可扩展性,易于修改。
4.提高开发效率和软件质量。
思考:
如何确保系统中一个类只能有一个实例?(第3章-单例模式)
如何将对象的创建和对象的使用分离?(第4章-简单工厂模式)
如何通过不同的工厂来创建不同类型的对象?(第5章-工厂方法模式)注重结果
如何设计一个能够创建一系列产品对象的工厂?(第6章-抽象工厂模式)
如何通过克隆来得到一个一模一样的对象?(第7章-原型模式)
如何一步步创建一个包含多个组成部分的复杂对象?(第8章-建造者模式)注重细节过程
如何在不修改现有系统的前提下重用没有源码的第三方类库?(第9章-适配器模式)
如何避免在多层继承结构中类的个数出现爆炸式增长?(第10章-桥接模式)
如果使用面向对象的方式来处理软件系统中的树状结构?(第11章-组合模式)
如何不通过继承的方式来扩展类的功能?(第12章-装饰模式)
如何为复杂子系统提供一个统一的入口?(第13章-外观模式)
如何实现对象的多次复用以节省系统资源?(第14章-享元模式)
如何提供一种间接访问机制来实现对象的远程访问或受限访问?(第15章-代理模式)
如何让多个对象都有机会来处理同一个请求?(第16章-职责链模式)
如何将请求的发送者和请求接收者完全解耦?(第17章-命令模式)
如何自定义一个简单的语言?(第18章-解释器模式)
如何间接遍历一个聚合对象中的元素?(第19章-迭代器模式)
如何协调多个对象之间复杂的相互调用?(第20章-中介者模式)
如何在软件中实现撤销功能?(第21章-备忘录模式)
如何实现对象之间一对多的联动?(第22章-观察者模式)
如何设计和实现一个具有多个状态的对象?(第23章-状态模式)
如何在不修改现有代码的前提下更换一种算法?(第24章-策略模式)
如何为一个复杂算法的某些步骤提供多种实现方式?(第25章-模板方法模式)
如何操作一个包含多种类型对象的复杂结构?(第26章-访问者模式)
参考:史上最全设计模式导学目录(完整版)_刘伟技术博客-CSDN博客_设计模式学习
工厂模式和构建者模式
工厂模式注重结果;构建者模式注重构建过程的具体细节。
装饰器模式和代理模式的区别
装饰器模式的关注点在于给对象动态添加⽅法,⽽动态代理更注重对象的访问控制。动态代理通常会在 代理类中创建被代理对象的实例,⽽装饰器模式会将装饰者作为构造⽅法的参数。
适配器模式和和装饰器模式以及代理模式的区别
适配器模式没有层级关系,适配器和被适配者没有必然连续,满⾜ has-a 的关系,解决不兼容的问题, 是⼀种后置考虑。
装饰器模式具有层级关系,装饰器与被装饰者实现同⼀个接⼝,满⾜ is-a 的关系,注重覆盖和扩展,是⼀种前置考虑。
适配器模式主要改变所考虑对象的接⼝,⽽代理模式不能改变所代理类的接⼝。
复习:
1.uml类图
c++ UML类图_baidu_16370559的博客-CSDN博客
2.面向对象设计原则
具体见:
面向对象设计原则_baidu_16370559的博客-CSDN博客
具体讲解模式参考:Carson带你学设计模式:这是一份全面 & 详细的设计模式学习指南_Carson带你学Android-CSDN博客
史上最全设计模式导学目录(完整版)_刘伟技术博客-CSDN博客_设计模式
创建型
1.单例模式
见:设计模式之单例模式_baidu_16370559的博客-CSDN博客
2.简单工厂模式(也叫静态工厂模式)
见:设计模式之简单工厂模式_baidu_16370559的博客-CSDN博客
3.工厂方法模式
见:设计模式之工厂模式_baidu_16370559的博客-CSDN博客
4.抽象工厂模式,即Abstract Factory Pattern
见:设计模式之抽象工厂模式_baidu_16370559的博客-CSDN博客
5.建造者模式
设计模式之建造者模式_baidu_16370559的博客-CSDN博客
6.原型模式
设计模式之原型模式_baidu_16370559的博客-CSDN博客
7.适配器模式
设计模式之适配器模式_baidu_16370559的博客-CSDN博客
8.外观模式
设计模式之外观模式_baidu_16370559的博客-CSDN博客
9.代理模式
设计模式之代理模式_baidu_16370559的博客-CSDN博客
10.桥接模式-Bridge Pattern
设计模式之桥接模式_baidu_16370559的博客-CSDN博客
11.组合模式
设计模式之组合模式_baidu_16370559的博客-CSDN博客
12.装饰模式
设计模式之装饰模式_baidu_16370559的博客-CSDN博客
13.享元模式
设计模式之享元模式_baidu_16370559的博客-CSDN博客
行为型
14.模板方法模式
设计模式之模板方法模式_baidu_16370559的博客-CSDN博客
15.策略模式
设计模式之策略模式_baidu_16370559的博客-CSDN博客
16.职责链模式
设计模式之职责链_baidu_16370559的博客-CSDN博客
17.命令模式
设计模式之命令模式_baidu_16370559的博客-CSDN博客
18.迭代器模式
设计模式之迭代器模式_baidu_16370559的博客-CSDN博客
19.备忘录模式
设计模式之备忘录模式_baidu_16370559的博客-CSDN博客