随笔分类 -  13、设计模式

摘要:动机: 在某些情况下我们可能会"过度地使用继承来扩展对象的功能”由于继承为类型引入的静态特质,使得这种拓展方式缺乏灵活性; 并且随着子类的增多(拓展功能的增多)",各种子类的组合(拓展功能的组合)会导致更多子类的膨胀。 如何使"对象功能的拓展"能够根据需要来动态实现?同时避免"拓展功能的增多"带来的 阅读全文
posted @ 2019-06-26 21:49 osbreak 阅读(112) 评论(0) 推荐(0) 编辑
摘要:定义一个操作中的固定的算法骨架,而将一些步骤延迟到子类中。把固定的实现写在基类中,变化的部分定为纯虚函数,由子类实现。 场景:1、在软件构建过程中,对于某一项,它常常有稳定的整体操作结构。但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架和应用之间的关系)而无法和合任务的整体结构同时实现。 阅读全文
posted @ 2018-12-13 21:28 osbreak 阅读(128) 评论(0) 推荐(0) 编辑
摘要:动机 在软件系统中,经常面临着"某些复结构复杂得对象"得创建工作, 由于需求得变化,这些对象经常面临着急剧得变化, 但是他们却拥有比较稳定一致得接口。 如何应对这种变化?如何向"客户程序(使用这些对象得程序)" 隔离出"这些易变对象",从而使得"依赖这些易变对象得客户程序" 不随着需求改变而改变 常 阅读全文
posted @ 2018-12-12 23:43 osbreak 阅读(118) 评论(0) 推荐(0) 编辑
摘要:适配器模式属于结构型的设计模式 [类的适配器] [对象适配器] , 它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适配器它是主要作用是将一个类的接口转换成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 优点 1.屏蔽了具体的实现方式,实现了依赖倒转。 2.可以把不统一的接口封装起来,使之成为统一的接口。 3.把... 阅读全文
posted @ 2018-12-12 22:35 osbreak 阅读(137) 评论(0) 推荐(0) 编辑
摘要:动机: 1、在软件构建中,某些对象使用的算法可能多样性,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂; 而且有时候支持不使用的算法也是一个性能负担。 2、如何在运行时根据需要透明地更改对象的算法? 将算法与对象本身解耦,从而避免上述问题? 定义一系列算法,把他们一个个封装起来,并且 阅读全文
posted @ 2018-12-12 22:21 osbreak 阅读(135) 评论(0) 推荐(0) 编辑
摘要:在软件系统中,经常面临着"一些列相互依赖的对象"的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(NEW),提供一种"封装机制"来避免客户程序和这种"多系列具体对象创建工作"的紧耦合? 1、如果没有应对"多系列对象构建"的需求变化,则没 阅读全文
posted @ 2018-12-12 21:49 osbreak 阅读(158) 评论(0) 推荐(0) 编辑
摘要:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类 "对象创建"模式 通过"对象创建"模式绕开New,来没避免对象创建过程中所导致的 紧耦合(依赖具体类),从而支持对象创建的稳定。 他是接口抽象之后的第一步工作 阅读全文
posted @ 2018-12-11 23:59 osbreak 阅读(168) 评论(0) 推荐(0) 编辑
摘要:"单一职责"模式: 在软件组件的设计中,如果职责划分不清晰,继续继承得到的结果往往时随着需求的变化,子类急剧膨胀,同时充斥着重复代码, 这时候的关键时华清职责。 动机: 由于某些类型的固有的实现逻辑,使得他们具有两个变化的维度, 乃至多个维度的变化。 如何应对这种"多维度的变化"? 如何利用面向对象 阅读全文
posted @ 2018-09-17 13:05 osbreak 阅读(158) 评论(0) 推荐(0) 编辑
摘要:动机: 在软件构建过程中,我们需要为某些对象建立一种"通知依赖关系",一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。 如果这样的依赖关系过于紧密,将使软件不能很好的抵御变化。 使用面向对象技术,可以将这种依赖关系落化,并形成一种稳定的依赖关系。从而实现软件体系结构的松 阅读全文
posted @ 2018-06-25 15:03 osbreak 阅读(154) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示