设计模式学习,总结笔记,望各位大佬指点一二

文章介绍了多种设计模式,包括创建型的抽象工厂、建造者、工厂方法、原型和单例模式,构造型的适配器、桥接、组合、装饰和外观模式,以及行为型的观察者、模板方法、命令、状态、职责链模式等。这些模式在软件开发中用于解决特定问题,提高代码的复用性和灵活性。
摘要由CSDN通过智能技术生成

1)创建型
1、抽象工厂模式-> 封装工厂公共方法,不同类可以继承他,子类在继续继承了抽象工厂类的类,来实现公共接口----------------提供一个创建一系列或相关依赖的接口,而无需指定他们具体的类
2、建造者模式---> 衣服穿搭(实现各种衣服的传达,传的人进行不同搭配就会有不同的效果) ----将一个复杂对象的构建与他的表示分离,使得同样的构建过程,可以有不同的表示
3、工厂方法模式->                ----------定义一个用于创建的接口,让子类决定实例化那个类工厂模式使一个类的实例化延迟到子类
4、原型模式--->----------用原型实例指定创建对象的种类,并且通过拷贝原型创建新的类,clone
5、单例模式--->避免实例被重复创建,产生问题--------------------------保证一个类仅有一个实例,并提供一个访问它的全局访问点(静态实例)

2)构造型
1、适配器模式-->不同电压都可以用相同的电器,通过适配电压解决----------------适用与接口以及实现但是和我用的不一样并且修改接口复杂(用于后期维护,或者外包接口适配)
2、桥接模式---->手机品牌和软件(不同手机品牌含有不同软件)------------------需要多角度去分类实现对象,而只用继承会造成大量的类增加(聚合/组合优先考虑使用,再考虑使用继承)
3、组合模式---->公司(含有子公司并切子公司含有子公司)  ----------------------适用与整体与部分的层次结构(公司管理系统)
4、装饰模式---->以动态透明的方式给单个对象添加职责--------------------------动态地给一些对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更加灵活
5、外观模式----> 类之间的相互依赖最少,使用外观来为系统间提供一个简单的屏障-----------为子系统中的一组接口提供个一致的界面,外观模式定义了一个高层接口,这一接口使得这一子系统更加容易使用
6、亨元模式---->网站(给不同客户做相同风格的网站)-------------------内部状态不随环境改变,除了参数什么区别就可以使用亨元模式,或者将参数移到类外,通过传惨来实例化类,可减少实例化类的数量,避免大量非常相似类的开销
7、代理模式---->代收花(调用者通过第三方来达到目的)------------------------为其它对象提供一种代理,以控制对这个对象的访问

3)行为型
1、观察者模式--->                                 -----------------------定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖与它的对象都得到通知并自动被更新
2、模板方法模式-->考试卷子(每人的每一份都一样,只是答案不同)-----------------------定义一个操作算法的框架,而将一些步骤延迟到子类中,模板方法使得子类的可以不改变算法的结构即可重新定义某些核心算法的步骤
3、命令模式---->客户点烧烤,客户不需知道咋烤的,告诉服务员就可以了(把请求与执行者分开)---较容易的设置一个命令队列,允许接收请求的一方是否要否决请求,容易实现对请求的撤销和重做,加进新的具体命令不影响其它的类
4、状态模式---->                                            --------------------------允许一个在其内部状态的改变时改变它的行为,让对象看起来似乎修改了它的类
5、职责链模式-->请求领导加薪(当前级别处理不了就要向上申请)----------------接收者和发送者没有对方明确的信息,仅需保持一个指向其后续者的引用,而不需要保持他所有候选者的引用

4)行为型2

1、解释器模式-->音乐播放器需要解析不同字符(解析器)-----------------一个语言需要需要解释执行,并且你可将该语言中的句子表示成一个抽象语法树时,可使用解析器模式[DP]
2、中介者模式-->联合国(各个国家的利益冲突由联合国这个中介处理)------------适用与一组对象以定义良好,但是复杂的方式进行通信的方式,以及想定制一个分布在多个类中的行为,而又不想生成太多子类的场合
3、访问者模式-->我们程序消息的分发(apphandler)-----------------适用与数据结构相对稳定,数据结构和操作分开,比如我们app,协议栈,平台几个估计的handeer
4、策略模式--->                                 -----------------定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换,本模式使得算法可以独立于使用它的客户而变化
5、备忘录模式-->游戏回退(需要记住某一时段得所有信息)-----------在不破坏封装性的前提下,捕获一个对象的内部状态,并在这个对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态
6、迭代器模式-->售票员(车上所有人都要买票,包括物)----------------------一个聚集对象,而且不管这些对象是什么都需要遍历的时候,应该考虑使用迭代器模式,对外不可见
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值