随笔分类 - 设计模式
珍爱生命,远离涂鸦
摘要:参考自graphic design patterns,讲的确实很透彻,静下心来看完就掌握了。 示例图: 上图示例中的六种关系: 车的类图结构为<<abstract>>,表示车是一个抽象类(或接口); 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 小汽车为与SU
阅读全文
摘要:模式定义:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。 模式结构: Context: 环境类 Strategy: 抽象策略类 ConcreteStrategy: 具体策略类 模式分析: 策略模式是一个比较容易理解
阅读全文
摘要:模式定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。 模式结构: Context: 环境类,定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象
阅读全文
摘要:模式定义:定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 模式结构: Subject: 目标,抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象 ConcreteSub
阅读全文
摘要:模式定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 模式结构: Mediator: 抽象中介者,定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信,一般包括一个或几个抽象的事件方法,并由子类去实现。 Co
阅读全文
摘要:模式定义:将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 模式结构: Command: 抽象命令类,声明了给所有具体命令类的抽象接口。 ConcreteCommand: 具体命令类,定义一个接收者和行为之间的弱耦合;实现exec
阅读全文
摘要:模式定义:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式: Facade: 外观角色,是模式的核心,被客户client角色调用,知道各个子系统的功能。同时根据客户角色已有的需求预
阅读全文
摘要:模式定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用,Proxy。 模式结构: Subject: 抽象主题角色(委托对象和代理对象共同实现的接口) Proxy: 代理主题角色 RealSubject: 真实主题角色 优点: 代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合
阅读全文
摘要:模式定义:动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。 模式结构: Component: 抽象构件 ConcreteComponent: 具体构件 Decorator: 抽象装饰类 ConcreteDecorator: 具体
阅读全文
摘要:模式定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 模式结构: Abstraction:抽象类 RefinedAbstraction:扩充抽象类 Implementor:实现类接口
阅读全文
摘要:模式定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 模式结构: Target:目标抽象类 Adapter:适配器类 Adaptee:适配者类 Client:客户类
阅读全文
摘要:模式定义: 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 三个关键点: 1. 该类只能有一个实例; 2. 它必须在类内部自行创建这个实例; 3. 它必须自行向整个系统提供这个实例。
阅读全文
摘要:面向对象设计最困难的部分是将系统分解成对象集合。因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。 设计模式三个分类: 1. 创建型模式:创建型模式将实例化对象的部分从系统中独立出来,它们将系统具体使用哪些类的信息封装起来
阅读全文
摘要:Builder Pattern 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 结构: Builder:抽象建造者 ConcreteBuilder:具体建造者 Director:指挥者 Product:产品角色 ● Builder(抽象建造者):它为创建一个产品Pr
阅读全文
摘要:情景介绍:众所周知,小米和华为生产一系列的电子产品(这里我们只列举手机和电脑) 引入两个基础概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌
阅读全文
摘要:继承和组合的比较: 面向对象系统中功能复用的两种最常用技术是类继承和对象组合(object composition)。正如我们已解释过的,类继承允许你根据其他类的实现来定义一个类的实现。这种通过生成子类的复用通常被称为白箱复用(white-box reuse)。术语“白箱”是相对可视性而言:在继承方
阅读全文
摘要:针对接口编程,而不是针对实现编程,这是四人组的经典名作《设计模式 可复用面向对象软件的基础》的第一个原则。 你想定义一个接口或抽象类,并且通过执行类型检查来确保子类实现了某些特定的方法。 解决方案: 使用 abc 模块可以很轻松的定义抽象基类 抽象类的一个特点是它不能直接被实例化,比如你想像下面这样
阅读全文
摘要:实际上,大多数框架都替我们考虑了这些问题,这就是为什么我们在框架规范的要求下写出的代码更流畅(至少以前给我的感觉是这样),言归正传。 高内聚、低耦合的定义: 内聚:每个模块尽可能独立完成自己的功能,不依赖于模块外部的代码。 耦合:模块与模块之间接口的复杂程度,模块之间联系越复杂耦合度越高,牵一发而动
阅读全文

浙公网安备 33010602011771号