设计模式-纯文字描述
设计模式在很多面试题中经常出现,同时,在写大型项目中,设计模式可以让代码更简洁,架构更合理,所以是我们必须要掌握的。
1、观察者模式
观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。一般需要以下几步:
1、定义多个 events
2、定义多个 subscribers:subscriber 继承统一的接口(比如update()方法)
3、定义一个publisher:定义subscribe 、unsubscribe、notify等方法,并且成员有一个hashmap,对应不同的event有多个subscribers。
4、定义一个类Entity,定义多个行为函数,同时成员有publisher,然后通过publisher来绑定某个event到publisher的subscribers上。
这样,当Entity有某个行为调用时,则通过publisher间接调用subscriber的update函数。
实际案例:在界面点击了一个按钮,需要多个地方同时更新或加载,这时候就需要观察者模式。
2、装饰器模式
俄罗斯套娃,可以一层层warp某个行为
实际案例:比如同一份数据,可以选择通过签名、加密、压缩等传输,一层层处理。
3、命令模式
实际案例:
1)针对客户端发来的不同类型的请求,都调用handle()函数,只是对于不同类似的请求实际的handle实现不一样。
2)我们键盘上有不同的按钮,但是对于不同的按钮,应用的处理逻辑不同。但是对于快捷键、菜单可能对应同一种行为。
3) 比如羊肉串店,客户点了鸡翅、羊肉串等多种菜,服务员接到订单后统一下发给不同的烤串员工去执行。
4、代理模式
实际案例:无法直接访问公司局域网,需要通过某台代理服务器,间接实现访问公司局域网
5、策略模式
可以通过设置不同的策略,实现不同的行为,设置的策略实际上就是接口。
实际案例:洗衣机有多个功能,不同的功能对应不同的算法实现。
6、责任链(行为型)
连接一堆的处理,定义各种 handler,将请求和处理分开
实际案例:比如某个员工请假,需要一级一级审批请假流程。或者用户购物,需要一层层验证权限、记录日志才能继续后续的购买行为。
7、原型模式
实际案例:为了获得一个同样的细胞,我们需要一个克隆技术
8、迭代器模式
依赖倒置原则,获取到迭代器,而不做具体的实现。只对外暴露一个顺序访问元素的方法。
优点:责任分离,把对象遍历的责任交给迭代器,让集合对象专注自己的功能。
参考:
https://www.bilibili.com/video/BV1uk4y127hG/?spm_id_from=333.788&vd_source=1b9978cb3a8a617140f288ca2f7659bf
https://www.bilibili.com/video/BV1614y1S7qs/?spm_id_from=333.337.search-card.all.click&vd_source=1b9978cb3a8a617140f288ca2f7659bf
转载请注明原文链接:https://www.cnblogs.com/itfanr/p/17605092.html
公众号:小弧光黑板报