23种设计模式
文章平均质量分 83
golden_lion
这个作者很懒,什么都没留下…
展开
-
设计模式读书笔记之工厂方法模式(Factory method)
拿前面的简单工厂的例子作案例.把简单工厂改造成工厂方法.[java] view plain copy//工厂接口 package designpattern.factory.factorymethod; import designpattern.factory.*; public interface IFactory {转载 2016-04-26 08:19:41 · 253 阅读 · 0 评论 -
设计模式读书笔记之桥接模式(bridge pattern)
桥接模式:将抽象部分和他的实现部分分离,使他们可以独立地变化。我个人认为,说桥接模式和享元模式, 与其说是一种设计模式,还不如说是一种思想, 它体现在对系统或对象的分析阶段。当你用桥接模式的思想去分析一个系统或对象,然后用代码实现它之后拿给别人看, 未必有人能说出你用了桥接模式. 桥接模式是为了解决这个问题而来的:继承关系是一种紧密的依赖关系,以至于父类有任何改变必将导致子类也发生转载 2016-04-25 09:10:34 · 252 阅读 · 0 评论 -
设计模式读书笔记之组合模式(Composite)
组合模式:将对象组合成树形结构以表示部分和整体的层次结构. 组合模式使得用户对单个对象和组合对象的适用具有一致性.先用一个普通的例子来解释一下组合模式. 一个很大的集团公司, 在各个大区开有分公司, 在小地区开有办事处, 一个经理,可以在办事处开展业务, 也可以在分公司工作, 还可以在总公司工作, 这是因为, 不管是总公司, 分公司, 还是办事处, 经理的工作模式基本相同, 而且总转载 2016-04-25 09:11:38 · 349 阅读 · 0 评论 -
设计模式读书笔记之单例模式(Singleton)
单例模式:保证一个类只有一个实例,并提供一个全局的访问途经。[java] view plain copypackage designpattern.singleton; public class Singleton { private static Singleton instance; private Si转载 2016-04-25 09:12:20 · 255 阅读 · 0 评论 -
设计模式读书笔记之备忘录模式(Memento)
备忘录模式:在不破坏封装性的前提下,捕获对象的内部状态并保存,这样以后就可以恢复该对象恢复到保存的状态。备忘录模式比较简单, 不要因为名字比较陌生而不敢学它. 它没有复杂的结构, 上图已经能足够说明问题.Originator: 备忘录发起人, 通常是需要备忘的对象自己.Memento: 备忘录对象, 保存了Originator的内部状态.CareTaker:转载 2016-04-25 09:13:47 · 324 阅读 · 0 评论 -
设计模式读书笔记之状态模式(State Pattern)
状态模式:当对象内部状态发生变化时允许改变其行为,使对象看起来像自身发生了变化一样。状态模式解决的问题是当对象的状态转换的条件过于复杂的情况, 它把状态的判断逻辑以及状态发生变化后对象的行为改变转移到不同的状态对象中去。比如: 一个人Person, 他在不同的时间, 自身处在不同的状态, 从而有不同的行为.于是我们通常会写出这样的代码:[java]转载 2016-04-25 09:14:40 · 304 阅读 · 0 评论 -
设计模式读书笔记之观察者模式(Observer)
观察者模式:让多个观察者可以监听某一个主题,当主题发生变化时,即使通知观察者,使他们自动能够更新自己。类图就免了.观察者模式比较简单, 通常的特征是:主题(被观察者)维护一个观察者序列, 当主题发生变化的时候,依次通知观察者,使之也改变自身.基础示例:[java] view plain copy//抽象主题 pa转载 2016-04-25 09:17:10 · 334 阅读 · 0 评论 -
设计模式读书笔记之建造者模式(Builder)
建造者模式: 将复杂对象的建造和表示分离, 使同样的建造过程可以创造出不同细节的产品.建造者模式,听名字就应该知道和工厂模式一样,是用来创造对象的。但是建造者和工厂模式的区别就是工厂模式只关注最终的产品,它往往是简单的调用被创建者的构造函数;而建造者更关心细节, 它定义了创建一个复杂对象所需的步骤, 而创建者具体的实现类可根据具体的需求,调整创建细节。示例:转载 2016-04-25 09:18:59 · 330 阅读 · 0 评论 -
设计模式读书笔记之外观模式/门面模式(Facade)
门面模式:为多个子系统提供统一的高层接口,以降低客户对子系统的依赖, 减少客户使用子系统的难度.门面模式是一个名字和描述都让人感觉很难的模式,我也曾经被它的名字吓倒过。其实门面模式很简单, 就是要把下面的左图结构变为右图结构。 基础代码:[java] view plain copy//子系统1 p转载 2016-04-25 09:20:10 · 389 阅读 · 0 评论 -
设计模式读书笔记之模版方法模式(Template)
模版方法模式:定义了一个算法/流程骨架,但是将一些步骤推迟到子类中去实现。示例代码:[java] view plain copy//模版 package designpattern.template; public abstract class Template { private void step1(){转载 2016-04-25 09:20:56 · 321 阅读 · 0 评论 -
设计模式读书笔记之代理模式(Proxy)
代理模式: 为其他对象提供代理以控制对该对象的访问.示例代码:[java] view plain copy//公共接口 package designpattern.proxy; public interface Subject { public void request(); } //被代转载 2016-04-25 09:22:16 · 296 阅读 · 0 评论 -
设计模式读书笔记之原型模式(Prototype)
原型模式:通过克隆原型来创造新对象。示例代码:[java] view plain copypackage designpattern.prototype; public class Prototype implements Cloneable{ private String name; public转载 2016-04-25 09:23:03 · 280 阅读 · 0 评论 -
设计模式读书笔记之命令模式(Command Pattern)
命令模式:将请求封装成对象,从而可使用不同的请求对客户进行参数化,对请求进行排队,撤销等操作。特点:Invoker:负责接收和执行命令,也可对命令排队,执行命令撤销等等;Command:命令接口,声明了相关的操作;ConcreteCommand:具体的命令, 持有一个Receiver,并通过调用Receiver的方法执行具体的操作;Receiver:转载 2016-04-25 09:09:45 · 416 阅读 · 0 评论 -
设计模式读书笔记之职责链模式(chain of responsibility)
职责链模式:当一个请求有可能被多个对象处理,则将这些对象连成一条链,并沿着这条链传递请求,直到该请求被处理为止。单看上图, 你肯定看不出职责链模式的特征, 先举一个例子来说明一下. 比如一个员工想加工资, 他首先会告知team leader, 如果在team leader授权范围之内,则他可以办到, 否则,就要请求上级来处理,最后直到老板, 于是很容易写出这样的代码来:转载 2016-04-25 09:08:44 · 283 阅读 · 0 评论 -
设计模式读书笔记之中介者模式(mediator pattern)
中介者模式:用一个中介对象来分装一系列对象的交互。中介者模式使得各个对象之间不需要直接打交道,从而使他们松散耦合。可以独立的改变他们之间的交互。如果你第一次接触中介者模式,你一定从上图看不出他的作用来。下图更能说明问题, 中介者模式就是要把左边的结构变成右边的结构:现实中一个更恰当的例子就是联合国,如果没有联合国,则各国之间的关系如下图的左边,在有联合国之后,国与国转载 2016-04-25 09:07:50 · 263 阅读 · 0 评论 -
设计模式读书笔记之简单工厂模式(Factory)
这篇文章纯属为了后面的工厂方法和抽象工厂做对比和铺垫, 因为简单工厂就是简单的创造并返回对象, 没有复杂的结构和逻辑.以最常见的dao为例。User对象有UserDao接口,UserDao有实现类UserOracleDao,UserDB2Dao。[java] view plain copy//业务模型 package desig转载 2016-04-26 08:21:29 · 284 阅读 · 0 评论 -
设计模式之访问者模式(Visitor)
访问者模式:在不改变一个已存在的类的层次结构的情况下,为这个层次结构中的某些类定义一个新的操作,这个新的操作作用于(操作)已存在的类对象,也即新的操作需要访问被作用的对象。一句话: 为一个稳定的类结构增加操作. 也即把易变化的类的行为搬到访问者中.特点:1 访问者角色(Visitor)作用于具体的元素执行相关的操作;2 元素角色(Element)定义了accept方转载 2016-04-26 08:22:40 · 299 阅读 · 0 评论 -
设计模式读书笔记之适配器模式(Adapter)
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。特点:1 实现了客户希望的接口;2 持有被适配的对象;3 不改动客户代码和被适配对象。示例代码:有一个客户类学生, 骑自行车上学, 自行车是该客户类学生的期望接口, 后来学生长大了,骑摩托车,摩托车的接口不是学生期望的,so... [jav转载 2016-04-26 08:23:42 · 503 阅读 · 0 评论 -
设计模式读书笔记之装饰器模式(Decorator)
Decorator装饰器模式就是创建一个新类为某一个类动态添加新功能或增强原有的功能.特点:装饰器持有一个被装饰的对象;装饰器和被装饰的对象有相同的接口;装饰器给被装饰的对象添加额外的功能或增强已有的功能.即保持接口, 增强功能. 表现形式上最大的特点是装饰器使用并且实现一个父类. 示例代码:[java] view pla转载 2016-04-26 08:24:35 · 318 阅读 · 0 评论 -
设计模式读书笔记之策略模式(Strategy)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化.(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable.Strategy lets the algori转载 2016-04-26 08:25:44 · 361 阅读 · 0 评论 -
23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2016-05-25 14:57:50 · 404 阅读 · 0 评论 -
Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2016-04-25 08:57:29 · 331 阅读 · 0 评论 -
从追MM谈Java的23种设计模式(转
设计模式做为程序员的“内功心法”,越来越受到.net 社区的重视,这种变化是很可喜的,Java社区走在了我们的前面,但这种状况也许有一天会发生改变。从追MM谈Java的23种设计模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的转载 2016-04-25 09:03:05 · 311 阅读 · 0 评论 -
设计模式读书笔记之面向对象的几大原则
为什么要知道面向对象的基本原则呢? 因为我们考察一个设计模式好不好, 一个设计优秀不优秀, 用基本原则来检验.这五个原则简称SOLID. 单一职责原则(Single Responsibility Principle): 就是一个设计或实体应该只做一件事/只描述一个事物, 比如一个类Cat, 那么读代码的人应该觉得这个类始终都在说猫,而不是扯到狗身上去了, 虽然猫狗有时候会打架,转载 2016-04-25 09:04:58 · 270 阅读 · 0 评论 -
设计模式读书笔记之解释器模式(Interpreter pattern)
解释器模式:给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。由定义来看,解释器模式就是一个不常用的模式,但是学习一下也没有坏处.我第一次听到解释器模式的时候想到的东西就是命令行(CMD)解释器,这就是典型的望文生义.但是解释器模式也没有想象中的复杂, 先举两个例子来对解释器模式建立一个大体的印象.第一个是: 早期的手机中都有一个铃声编辑器,转载 2016-04-25 09:06:06 · 295 阅读 · 0 评论 -
设计模式读书笔记之享元模式(Flyweight pattern)
享元模式:运用共享技术支持大量细粒度的对象。记得我年前我读过一次享元模式,当时因为所看的书中的例子不是很好懂,就觉得享元模式无非就是搞个缓冲池保存一些对象然后被共享以免重复创造。我花了差不多两天的时间来细看享元模式,除了参阅head first,大话设计模式,Java与模式,还大量的在网上看网友们的理解. 我发现三本书中都没有举出恰当的例子来说明这个模式,都是牵强附会,为了转载 2016-04-25 09:07:01 · 291 阅读 · 0 评论 -
设计模式读书笔记之抽象工厂模式(Abstract Factory)
如果一个产品家族中有多个产品, 而工厂需要创建多个产品家族, 那么前例中的工厂方法就自然演化为抽象工厂.比如我们在前面的工厂方法的基础上再添加创建DeptDao的功能.[java] view plain copy//工厂接口 package designpattern.factory.abstractfactory; im转载 2016-04-25 09:23:59 · 284 阅读 · 0 评论