
获得徽章 8
- 设计模式(七)
适配器模式 & 装饰者模式 & 代理模式
适配器模式是将一个类(a)通过某种方式转换成另一个类(b)。
装饰模式是在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b)。
代理模式是将一个类(a)转换成具体的操作类(b)。评论点赞 - 设计模式(六)
观察者模式,一对多的依赖关系,被观察者(一)拥有一个观察者列表,当自己有变化时,通知所有观察者(多)。
Vue的响应式原理用到了观察者模式。评论点赞 - 设计模式(五)
享元模式,从字面意思理解,“享”就表示共享,“元”表示对象,即重用现有的同类对象。
它分离出了内部状态和外部状态,对象内部不可变的信息(如类型)称为内部状态,少量可变的信息(如位置)提取到对象外部,如客户端来决定可变信息,这种可变信息称为外部状态。
支持大量细粒度的对象,细粒度对象指的是对象之间有大量重复的不可变的信息(类型),只有少量可变的信息(位置)。
享元模式和单例模式的区别:
享元设计模式是一个类有很多对象,而单例是一个类仅一个对象。
享元模式是为了节约内存空间,提升程序性能,而单例模式则主要是出于共享状态的目的。展开评论点赞 - 设计模式(四)
模板方法模式,父类定义一个框架或者模板,将模板的每一个实现步骤延迟到子类中。
e.g 炒菜,一个模板:放油 爆香 放菜 放盐 翻炒 放调料...
具体实现,定义抽象类,定义每一个步骤的抽象方法,定义一个模板方法,调用每一个步骤的方法,并且模板方法中可以放入共同的地方,例如“做饭开始”“做饭结束”。展开评论点赞 - 设计模式(三)—— 策略模式(政策模式)
它和状态模式一样,也是用来避免多层if-else嵌套,它们的类图也极其相似。
状态模式:程序运行过程中不同状态之间可以随意转换
策略模式:选择一种策略执行一次
状态模式强调做什么,策论模式强调怎么做。
举例:我不开心,就去玩耍散心;我开心,就去学习。那状态模式注重的是开心和不开心,策略模式关注的就是怎么去玩耍(一个人 or 多个人 )或者怎么去学习(图书馆 or 教室...)。
体现在具体程序上,强调状态的可能是枚举有限个状态,例如服务器的200,404,502...,但是这些状态服务器该如何处理,那强调策略的更简单,例如我要计算某个点到某个点的最短路径,我可以选择①dijkstra算法 ②A*算法 ③xxx算法 ... etc. 跟点的状态无关,只关心用啥算法算到最短路径展开评论点赞