摘要: 动机 在软件构建过程中,经常会出现多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的变更,这种直接的引用关系将面临不断的变化。 在这种情况下,我们可使用一个“中介对象”来管理对象间的关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。 定义 用一个中介 阅读全文
posted @ 2020-02-02 14:09 Redwarx008 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 定义 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。好比日本现在就只提供110V的电压,而我的电脑 阅读全文
posted @ 2020-01-31 16:29 Redwarx008 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 定义 为其他对象提供一种代理以控制对这个对象的访问。这样实现了业务和核心功能分离。 结构 角色 Subject: 抽象角色。声明真实对象和代理对象的共同接口。 Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她 阅读全文
posted @ 2020-01-30 16:44 Redwarx008 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价,主要指内存需求方面的代价。 要点 享元模式要求被共享的对象必须是细粒度对象。如输入英文段落,26个字母可能随时被客户重复使用。尽管每个字母可能出现的位置不一样,但在物理上它们共享同一个对象(同一个 阅读全文
posted @ 2020-01-29 10:56 Redwarx008 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 定义 只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例 具体运用场景 1.设备管理器,系统中可能有多个设备,但是只有一个设备管理器,用于管理设备驱动; 2.数据池,用来缓存数据的数据结构,需要在一处写,多处读取或者多处写,多处读取; 要点 1.全局只有一个实例: 阅读全文
posted @ 2020-01-26 23:09 Redwarx008 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“ 阅读全文
posted @ 2020-01-24 19:50 Redwarx008 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变? 模式定义 阅读全文
posted @ 2020-01-23 15:01 Redwarx008 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合? 模式定义 提供一个接口,让该接口负责创建一系 阅读全文
posted @ 2020-01-22 16:38 Redwarx008 阅读(102) 评论(0) 推荐(0) 编辑
摘要: “对象创建”模式 通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 动机 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如何绕过常规的对 阅读全文
posted @ 2020-01-20 00:04 Redwarx008 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 动机 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度, 乃至多个纬度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度? 模式定义 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。 ——《 阅读全文
posted @ 2020-01-17 23:58 Redwarx008 阅读(115) 评论(0) 推荐(0) 编辑