设计模式
文章平均质量分 78
叫我东方小巴黎
这个作者很懒,什么都没留下…
展开
-
【设计模型】4.Decorator 装饰模式
Decorator 装饰模式动机(Motivation)在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响将为最低?例子中静态特质:(继承实现)NetworkStream::Read(number)原创 2022-04-28 09:03:34 · 72 阅读 · 0 评论 -
【设计模式】3.Observer 观察者模式
Observer 观察者模式动机(Motivation)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。模式定义定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。原创 2022-03-30 23:48:30 · 90 阅读 · 0 评论 -
【设计模式】1.Template Method 模板方法模式
Template Method模板方法动机(Motivation)在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求?模式定义定义一个操作中的算法的骨架 (稳定) ,而将一些步骤延迟 (变化) (虚函数)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构,即可重定义(原创 2022-03-26 20:06:43 · 76 阅读 · 0 评论 -
【设计模式】2.Strategy 策略模式
Strategy 策略模式动机(Motivation)在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担(许多ifelse不被使用,占用缓存位置等等)。如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?模式定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(支持变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。——《原创 2022-03-27 15:05:33 · 763 阅读 · 0 评论 -
面向对象设计七大原则
面向对象设计六大原则1)单一职责原则2) 开-闭原则3) 里氏代换原则4) 依赖倒换原则5) 接口隔离原则6) 迪米特法则或最少知识原则1)单一职责原则一个合理的类,应该仅有一个引起它变化的原因,即单一职责,就是设计的这个类功能应该只有一个;优点:消除耦合,减小因需求变化引起代码僵化。2) 开-闭原则讲的是设计要对扩展有好的支持,而对修改要严格限制。即对扩展开放,对修改封闭。优点:降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软件系统需要增加新的功能时,不需要对作为系统基原创 2022-03-15 10:26:55 · 2542 阅读 · 0 评论