Designing Patterns
文章平均质量分 58
stsfang
这个作者很懒,什么都没留下…
展开
-
结构型模式之桥接模式
桥接模式 处理多层继承结构存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。 如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合单一职责原则。 与多层继承结构不同,它将两个独立变化的维度设计为两个独立的继承等级结原创 2018-01-21 15:57:52 · 168 阅读 · 0 评论 -
行为型模式之访问者模式
访问者模式以不同的方式操作复杂数据结构医院处方单?划价人员和药品人员?公司员工?人力资源部和财务部?如何为统一集合对象中的元素提供不同的操作方式?定义:提供一个作用于某对象结构中的各元素的操作提示,它使得可以在不改变各元素的类的前提下作用于这些元素的新操作。访问者模式是一种对象行为型模式。访问者模式的结构 访问者模式的UML结构Visitor(抽象访问者):原创 2018-01-23 21:49:44 · 199 阅读 · 0 评论 -
行为型模式之解释器模式
解释器模式用的不多,暂时没有学习。原创 2018-01-23 21:51:01 · 118 阅读 · 0 评论 -
行为型模式之状态模式
状态模式解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象,状态模式是一种对象行为型模式。状态模式的结构 状态模式的UML结构Context(环境类状态):上下文类,拥有多种状态的对象。State(抽象状态类):用于定义一个接口以封装与环境类的一个特定状态相原创 2018-01-23 16:40:19 · 173 阅读 · 0 评论 -
设计模式入门介绍
设计模式的定义 设计模式(Design Pattern)是一套被反复利用的、多人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。 学习设计模式时需要注意的几点问题 这个设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它 它是如何解决问题的,掌握它的结构图,记住它的关键代码 能原创 2018-01-20 01:52:22 · 170 阅读 · 0 评论 -
预备知识:UML和面向对象设计原则
单一职责原则 一个类只读者一个功能领域中的相应职责。核心思想是“高内聚,低耦合”。 开闭原则 一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。 重点:灵活性、扩展性 在很多面向对象编程语言中都提供了接口、抽象类等机制,可以通过它们定义系统的抽象层,再通过具体类来进行扩展。如果需要修改系统的行原创 2018-01-20 02:55:19 · 320 阅读 · 0 评论 -
创建型模式之单例模式
简要介绍 GoF设计模式包含5种创建型模式。 通常将一种非GoF模式——简单工厂模式作为学习其他 工厂模式的基础。 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。 工厂方法模式:定义一个用于创建对象的接口,让子类决定将哪一个类实例化原创 2018-01-20 14:46:45 · 197 阅读 · 0 评论 -
创建型模式之工厂方法模式
阅读前提 了解简单工厂模式 UML类图 JAVA的反射机制 XML基础语法 工厂方法模式之于简单工厂模式 工厂方法模式解决了简单工厂模式在添加新产品时需要改动工厂类代码的缺陷,从而维护开闭原则。 在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单原创 2018-01-20 18:31:58 · 148 阅读 · 0 评论 -
创建型模式之简单工厂模式
简单工厂模式介绍 写在前面 阅读本文之前你需要知道 1. 连接基本的UML类图结构 2. 类关系 简单工厂模式并不属于GoF的23个经典模式,但通常把它作为学习其他工厂模式的基础,它的设计思想比较简单: 首先将需要创建的各种不同对象的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行抽象和提取后封装到一个抽象产品类中,每原创 2018-01-20 16:19:36 · 175 阅读 · 0 评论 -
创建型模式之抽象工厂模式
写在前面 产品等级结构:即产品的继承结构。 产品族:产品族是只同一个工厂生产的,位于不用产品等级结构中的一组产品。 当系统所提供的工厂生产的具体产品并不是一个简单的等级结构,而是多个位于不同产品等级结构、属于不同类型的具体产品时,就可以使用抽象工厂模式。抽象工厂模式是所有形式的工厂模式中最为抽象和最具有一般性的一种形式。 抽象工厂模式与工厂模式最大的原创 2018-01-20 19:36:54 · 157 阅读 · 0 评论 -
创建型模式之原型模式
学习前提 深克隆(shadow clone) 浅克隆(deep clone) 序列化(serialization) 原型模式 原型模式:使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。 序列化:将对象写到流的过程,写到流中的对象是原有对象的一个复制品,而原有对象仍然存在于内存中。通过序列化实现的复制不仅可以复制对象本身,而且可原创 2018-01-20 20:28:36 · 161 阅读 · 0 评论 -
创建型模式之建造者模式
建造者模式 建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可。 建造者模式结构图 代码框架class Product { private String partA; private String partA; p原创 2018-01-20 21:09:24 · 167 阅读 · 0 评论 -
行为型模式之模板方法模式
模板方法模式模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类和子类之间的继承关系。在抽象父类中提供一个模板方法来定义流程实现的一系列基本方法的执行顺序,而通过子类来覆盖某些步骤,使得相同的算法框架可以有不同的执行结果。模板方法模式是一种基于继承的代码复用基本技术。定义:定义一个操作中算法的基本框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定原创 2018-01-23 21:00:22 · 263 阅读 · 0 评论 -
行为型模式之策略模式
策略模式在策略模式中,可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法。每一个封装具体算法的类称为一种策略。策略模式的主要目的在于将算法的定义与实现分离。定义:定义一系列算法类,将每一个算法封装起来,并让它们可以互相替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式。策略模式是一种对象行为型模式。策略模式的结构 策略模式UML结构Con原创 2018-01-23 20:27:54 · 171 阅读 · 0 评论 -
结构型模式之组合模式
组合模式以面向对象的方法处理树形结构问题对于树形结构,当容器对象的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象,牵一动百。定义:组合多个对象形成树形结构以表示具有“整体——部分”的层次结构。组合模式对单个对象(即叶子对象)和组合对象(容器对象)的使用具有一致性,组合模式又可以称为“整体——部分”模式,它是一种结构型模式。组合模式的结构在组合模式中引入了原创 2018-01-21 17:21:44 · 215 阅读 · 0 评论 -
结构型模式之装饰模式
装饰模式装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入装饰类,在装饰类中既可以调用待装饰类的原有类的方法,还可以增加新的方法,以扩充原有类的功能。定义:动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。装饰模式结构原创 2018-01-21 21:49:25 · 182 阅读 · 0 评论 -
结构型模式之外观模式
外观模式定义:外部与一个子系统的通信通过一个统一的外观角色进行,为子系统中的一组接口提供一个一致的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。外观模式没有一般化的类图描述。外观模式结构举例 外观角色中可能存在以下典型代码class Facade { private SubSystemA ob原创 2018-01-22 01:56:13 · 157 阅读 · 0 评论 -
结构型模式之享元模式
享元模式定义:运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似。状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,是一种对象结构型模式。享元模式结构 - Flyweight(抽象享元类):通常是一个接口或抽象类,在抽象享元类中声明了具体享元类公共的方法,这些方法可以向外界提供享元对象原创 2018-01-22 16:25:01 · 187 阅读 · 0 评论 -
结构型模式之代理模式
代理模式定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式是一种对象结构模型。代理模式为对象的访问控制提供看=了一种设计方案。为了让客户端能够一致对待真实对象和代理对象,在代理模式中引入抽象层。代理模式结构 代理模式UML结构Subject(抽象主题角色):声明了真实主题和代理主题的共同接口,使得在任何使用真实主题的地方都可以使用代理主原创 2018-01-22 17:17:42 · 161 阅读 · 0 评论 -
行为型模式之观察者模式
观察者模式用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。定义:定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式别名包括“发布-订阅”模式,“模型-视图”模式,“源-监听器”模式或从属者模式。观察者模式结构原创 2018-01-22 20:07:15 · 191 阅读 · 0 评论 -
行为型模式之职责链模式
职责链模式定义:避免将请求发送者与接受者耦合在一起,让多个对象都有机会接收请求,将这些对象连接成一条线,并且沿着这条线传递请求,直到对象处理它为止。职责链模式是一种对象行为型模式。职责链模式结构Handler(抽象处理者):定义了一个处理请求的接口,一般设计为抽象类,由于不同的具体处理请求的方式不同,因此在其中定义了抽象请求处理方法。因为每一个处理者的下家还是一个处理者,因此原创 2018-01-22 22:20:21 · 175 阅读 · 0 评论 -
行为型模式之命令模式
命令模式定义:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,一家支持可撤销的操作。命令模式是一种对象行为型模式,其别名为工作模式或事务模式。命令模式的核心在于引入了命令类,通过命令类来降低发送者与接收者的耦合度,请求发送者只需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法。命令模式的本质是对请求进行封装,一个请求对应与一个命令,将发原创 2018-01-22 23:39:24 · 225 阅读 · 0 评论 -
行为型模式之迭代器模式
迭代器模式聚合对象:存储数据和遍历数据。迭代器类实现数据存储和数据遍历的分离。定义:提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标。迭代器模式是一种对象行为型模式。迭代器模式结构包含聚合和迭代器两个层次结构,考虑到系统的灵活性和可扩展性,在迭代器模式中应用了工厂方法模式。 Iterator(抽象迭代器类):定义访问和遍历元素的接口。Concr原创 2018-01-23 00:14:46 · 157 阅读 · 0 评论 -
行为型模式之中介者模式
中介者模式对象之间存在大量的多对多联系,这些对象既会影响别的对象,也会被别的对象影响,这些对象称为同事对象,它们之间通过彼此的相互作用实现系统的行为。中介者模式可以使对象之间的关系数量急剧减少,通过引入中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构。星形结构中,同事对象不再直接与另一个对象联系,它通过中介者对象与另一个对象发生相互作用。定义:用一个中介对象来封装原创 2018-01-23 15:14:14 · 156 阅读 · 0 评论 -
行为型模式之备忘录模式
备忘录模式解决撤销问题,即状态恢复的实现机制定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。核心:备忘录类以及用于管理备忘录的负责人类的设计。备忘录模式的结构Originator(原发器):普通类,用于创建备忘录,并存储当前内部状态,也可以使用备忘录来原创 2018-01-23 16:09:52 · 161 阅读 · 0 评论 -
结构型模式之适配器模式
适配器模式 定义:将一个接口转化成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器。适配器模式既可以作为类结构行模式,也可以作为对象接口型模式。 适配器模式分类:对象适配器模式、类适配器模式 对象适配器模式结构Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。Adapter(适配器类):原创 2018-01-21 01:54:13 · 184 阅读 · 0 评论