设计模式
文章平均质量分 73
iteye_20137
这个作者很懒,什么都没留下…
展开
-
设计模式-笔记(一)
1、利用继承来提供Duck的行为,这会导致下列哪些缺点?A、代码在多个子类中重复 B、运行时的行为不容易改变 C、我们不能让鸭子跳舞D、很难知道所有鸭子的全部行为 E、鸭子不能同时又飞又叫 F、改变会牵一发动全身,造成其他鸭子不想要的改变 虽然Flyable和Quackable可以解决“一部分”问题(不会再有会飞的橡皮鸭),但是却造成代码无法复用,这只能算是从一个噩梦跳进另...原创 2010-09-06 09:33:14 · 210 阅读 · 0 评论 -
Java命令模式:设计模式的四人帮
本文介绍了一个Java设计模式:Java命令模式。这个模式很容易理解,分为四步:Command对象建立,Client对象,Invoker对象以及Receiver。AD: <script src="http://www.51cto.com/js/article/keywords_ad_new.js"></script> 下面将对Java命令模式...原创 2011-08-20 11:47:57 · 173 阅读 · 0 评论 -
深入浅出java命令模式
一、引言 忙里偷闲,终于动笔了。命令模式是从界面设计中提取出来的一种分离耦合,提高重用的方法。被认为是最优雅而且简单的模式,它的应用范围非常广泛。让我们一起来认识下它吧。 先从起源说起。在设计界面时,大家可以注意到这样的一种情况,同样的菜单控件,在不同的应用环境中的功能是完全不同的;而菜单选项的某个功能可能和鼠标右键的某个功能完全一致。按照最差、最原始的设计,这些不同功能的菜单、或者右键弹出菜单是...原创 2011-08-20 14:39:58 · 76 阅读 · 0 评论 -
java回调函数
所谓回调,就是客户程序C调用服务程序S中的某个方法a,然后S又在某个时候反过来调用C中的某个方法b,对于C来说,这个b便叫做回调函数。一般说来,C不会自己调用b,C提供b的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的b叫甚名谁,所以S会约定b的接口规范(函数原型),然后由C提前通过S的一个函数r告诉S自己将要使用b函数,这个过程称为回调函数的注册,r称为注册函数。下面举...原创 2011-09-01 16:31:02 · 117 阅读 · 0 评论 -
设计模式系列-适配器模式(&几种模式的链接)
一、上篇回顾 通过上篇的简单讲解,我们知道了,组合模式意图是通过整体与局部之间的关系,通过树形结构的形式进行组织复杂对象,屏蔽对象内部的细节,对外展现统一的方式来操作对象,是我们处理更复杂对象的一个手段和方式。本文以查询控件为例,说明了,查询控件内部的组成元素,及如何操作内部的组成元素,包括添加元素,删除和处理相应事件的Handler,当然组合模式的作用远比这些强大,后面我们...原创 2011-09-02 15:55:42 · 94 阅读 · 0 评论 -
Java模式设计之单例模式(一)
作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 注:本文乃阎宏博士的《Java与模式》一书的第十五章。 引言 单例模式的要点 单例单例 显然单例模式的要点有三个;一是某各类只能有一个实例;二是它必须自行创建这个事例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象...原创 2010-06-28 10:12:02 · 133 阅读 · 0 评论 -
JAVA设计模式——简单工厂(Simple Factory)模式
工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态:简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 一、 简单工厂(Simple Factory)模式 简单工厂模式是类的创建模式,又叫做...原创 2010-07-01 15:04:51 · 86 阅读 · 0 评论 -
JAVA设计模式——工厂方法(Factory Method)模式
一 、工厂方法(Factory Method)模式 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建.这样核心类成为一个抽象工厂角色.仅负责具体工厂子类必须实现的接口.这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品.二、 工厂方法模式角色与结构抽象工厂(Creator)角色:是工厂方法...原创 2010-07-01 15:07:45 · 125 阅读 · 0 评论 -
Java设计模式之简单工厂模式(2)
一、概述 简单工厂模式(Simple Factory),又称静态工厂方法模式,是类的创建模式。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类详细说明如下: 一个具体工厂通过条件语句创建多个产品,产品的创建逻辑集中与一个工厂类。 客户端通过传不同的参数给工厂,实现创建不同产品的目的 增加新产品时,需要修改工厂类、增加产品类,不符合OCP原则...原创 2010-07-01 15:36:04 · 81 阅读 · 0 评论 -
Java设计模式之工厂方法模式(2)
一 、工厂方法(Factory Method)模式 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。 工厂方法(Factory Method)模式,又称多态...原创 2010-07-01 15:37:12 · 62 阅读 · 0 评论 -
Java设计模式之抽象工厂模式
一 、抽象工厂模式(Abstract Factory) 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 抽象工厂(Abstract Factory)模式,又称工具箱(Kit 或Toolkit)模式。 二、创建过程如下 一个具体工厂创建一个产品族,一个产品族是不同系列产品的组合,产品的创建的逻辑分在在每个具体工厂类...原创 2010-07-01 15:37:55 · 86 阅读 · 0 评论 -
java设计模式之工厂模式(简单工厂方法)
工厂模式总述 工厂模式属于类的创建模式,工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,而不必事先知道每次要实例化哪一个类。工厂模式有三个基本形态:1. 简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory MethodPattern)。2. 工厂方法(Factory Method)模式,又称多态性工厂(Polymor...原创 2010-07-01 15:42:03 · 80 阅读 · 0 评论 -
java设计模式之工厂模式(工厂方法)
工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。首先,在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。这种进一步抽象化的结果,使这种工厂方法模式可以用来允许系...原创 2010-07-01 15:44:52 · 75 阅读 · 0 评论 -
java设计模式之工厂模式(抽象工厂)
java设计模式之工厂模式(抽象工厂) 收藏 理解抽象工厂模式包括要注意以下几个方面1. 在工厂方法模式中我们描述了,抽象工厂创建抽象产品的过程,那什么不使用一个工厂类直接创建抽象产品呢?其实原因很简单:抽象产品角色是由Java 接口或者抽象Java 类实现的,而一个Java 接口或者抽象Java 类是不能实例化的。也就是说,一个工厂类是不能直接创建抽象产品的。2. 根据里氏代换原则(可详见《...原创 2010-07-01 15:46:35 · 65 阅读 · 0 评论 -
java模式学习——适配器模式
某个类拥有我们所需要的功能,但他的方法名却不能满足用户的期望,这时候需要使用适配器模式修改这个现存类和外界交互的接口,从而使其能满足用户的需求。适配器模式的宗旨是:保留现有类提供的服务,修改其接口使其能满足用户的需要。类适配器:图1 类适配器模式类适配器模式如图1所示。其中RequiredClass是提供给用户的接口;ExistingClass是已存在实现具体功能的类,...原创 2010-07-21 11:10:03 · 94 阅读 · 0 评论 -
Java中的策略模式浅析及回调函数
策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。 策略模式通常把一系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。 何时使用策略模式: 1.如果在一个系统里面有许多类,他们之间的区别仅在于他们的行为,那么使用策略类可以动态的让一个对象在许多行为中选择一种行为。 2.如果系统需要动态的在几种算法中选择一种,那么这些算法可以具体...原创 2010-08-03 10:18:36 · 381 阅读 · 0 评论 -
经典:从追MM谈Java的23种设计模式(一)
设计模式做为程序员的“内功心法”,越来越受到.net 社区的重视,这种变化是很可喜的,Java社区走在了我们的前面,但这种状况 也许有一天会发生改变。 从追MM谈Java的23种设计模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡...原创 2010-08-03 10:19:44 · 95 阅读 · 0 评论 -
经典:从追MM谈Java的23种设计模式(二)
15、INTERPRETER—俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等等,跟MM约会时,只 要做一个Interpreter,照着上面的脚本执行就可以了。 解释器模式:给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来 解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后,...原创 2010-08-03 10:20:29 · 72 阅读 · 0 评论 -
代理模式,JDK动态代理,SpringAOP来龙去脉(2)
package com.fruitking.proxy.springaop; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; imp...原创 2010-06-25 12:22:23 · 85 阅读 · 0 评论 -
代理模式,JDK动态代理,SpringAOP来龙去脉(1)
这里我们学习一下代理模式,JDK的动态代理,以及以JDK为基础的springAOP实现 代理模式:类结构的模式,优点就是不需要更改原有类(被代理类)就能增强原有类(被代理类)的功能,缺点就是必须实现原有类(被代理类)的接口 JDK的动态代理:优点就是不必“复制”原有类(被代理类)接口实现类,缺点就是必须为每个被代理类实现几乎一样的方法 springAOP:优点就是采用springIOC,JDK动态...原创 2010-06-25 12:19:22 · 210 阅读 · 0 评论 -
Java代理模式
1.代理模式代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式一般涉及到的角色有:抽象角色 :声明真实对象和代理对象的共同接口;代理角色 :代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真...原创 2010-06-25 11:05:38 · 64 阅读 · 0 评论 -
设计模式-笔记(二)
抽象类:Animal 具体实现Dog和Cat针对实现编程:Dog d = new Dog();d。bark(); 针对接口/超类型编程Animal animal = new Dog();animal。makeSound(); 整合鸭子的行为 关键在于,鸭子现在会将飞行和呱呱叫的动作”委托“(delegate)别人处理,而不是使用定义在Duck类(或子类)...原创 2010-09-06 10:08:18 · 86 阅读 · 0 评论 -
设计模式-笔记(三)
设计原则:多用组合,少用继承 以上笔记介绍的是策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 ----设计谜题解答----1)一个抽象类:Character,一个接口:WeaponBehavior,剩下八个是类。2)King,Queen,Troll,Knight继承(extend)Character;KnifeBehavi...原创 2010-09-06 10:56:20 · 82 阅读 · 0 评论 -
观察者模式-设计模式-笔记(一)
出版者+订阅者==观察者模式 报纸的订阅 出版者改称为”主题“(Subject),订阅者改称为”观察者“(Observer) 观察者模式定义了一系列对象之间的一对多关系。 当一个对象改变状态,其他依赖者都会收到通知。 主题:这样或许不行,只是我必须因此门户大开,让你们全都可以进来取得你们需要的状态,这样太危险了。我不能让你们进来里面大肆挖掘我的各种...原创 2010-09-06 14:53:35 · 101 阅读 · 0 评论 -
来杯咖啡-装饰者模式(Decorator)
前言上篇【观察者模式】发布已经近一个月了,个人感觉反应并不太理想,因为大家响应都不是很积极,不知是文章那里写得有问题,而且也没有人提出过有价值的改进建议,多少感觉有些失望L!因为工作繁忙,所以不可能把主要精力投入到写作上,因此这个系列的文章更新有些缓慢,但是每篇文章我一直坚持高质量(这是最重要的),而且同样注重大家的反馈,一直希望大家能以这些文章为媒介,换来思想碰撞的火花,使每篇文章都能成为大...原创 2010-09-07 21:31:01 · 194 阅读 · 0 评论 -
装饰者模式-设计模式-笔记(二)
装饰java.io类:InputStream //抽象组件^ |FileInputStream StromgBifferInputStream ByteArrayInputStream FilterInputStream //抽象装饰者,这些InputStream类是可以被装饰者包起来的具体组件^ |PushbackInputStream BufferdInputS...原创 2010-09-08 08:38:28 · 68 阅读 · 0 评论 -
工厂模式-设计模式-笔记(一)
我们不应该针对实现编程,但是当我每次使用new时,不正是在针对实现编程吗? 当使用new时,你的确是在实例化一个具体类,所以用的确实是实现,而不是接口。 代码绑着具体类会导致代码更脆弱,更缺乏弹性。 如何姜实例化具体类的代码从应用中抽离,或者封装起来,使他们不会干扰应用的其他部分? 要依赖抽象,不要依赖具体类。...原创 2010-09-09 18:33:35 · 74 阅读 · 0 评论 -
相关知识
1、java设计模式之实例详解http://java.chinaitlab.com/special/patterns/Index.html原创 2010-09-21 15:14:46 · 77 阅读 · 0 评论 -
门面模式-《java与模式》
1、医院的例子 病人 病人 病人 \ | / 接 待 员 ...原创 2010-09-26 19:01:28 · 136 阅读 · 0 评论 -
简单工厂模式-《java与模式》
缺点:1、工厂类成为全能类,一旦不能工作,系统受到影响2、当产品类有不同的接口种类时,工厂类需要判断什么时候创建某种产品,在将来进行功能扩展时困难。3、使用静态方法作为工厂方法,而静态方法无法由子类继承,因此,工厂角色无法形成基于继承的等级结构。 后两种在工厂方法模式中得到克服。 这个模式的优点是允许客户端相对独立于产品创建的过程,并且在系统引入新产品的时候无须修改客户...原创 2010-09-26 19:50:58 · 70 阅读 · 0 评论 -
状态模式和策略模式的比较
状态模式(state pattern)和策略模式(strategy pattern)的实现方法非常类似,都是利用多态把一些操作分配到一组相关的简单的类中,因此很多人认为这两种模式实际上是相同的。然而在现实世界中,策略(如促销一种商品的策略)和状态(如同一个按钮来控制一个电梯的状态,又如手机界面中一个按钮来控制手机)是两种完全不同的思想。当我们对状态和策略进行建模时,这种差异会导致完全不同的问...原创 2010-09-27 19:56:21 · 79 阅读 · 0 评论 -
设计模式之六大原则——单一职责原则(SRP)
开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。Softeware entities like classes,modules and functions should be open for extension but closed...原创 2010-10-19 08:48:48 · 71 阅读 · 0 评论 -
设计模式-火龙果
鸭子-策略模式(Strategy)http://www.uml.org.cn/sjms/201010252.asp 气象站的故事-观察者模式http://www.uml.org.cn/sjms/201012221.asp http://www.cnblogs.com/justinw/archive/2007/05/02/734522.html...原创 2011-06-22 16:19:53 · 124 阅读 · 0 评论 -
UML类图关系全面剖析
UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。而其中关联又分为双向关联、单向关联、自身关联;下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里。1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因...原创 2011-06-28 10:38:14 · 72 阅读 · 0 评论 -
JDK里的设计模式
下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns Structural(结构模式)Adapter:把一个接口或是类变成另外一种。 java.util.Arrays#asList()java...原创 2011-06-28 16:07:44 · 71 阅读 · 0 评论 -
模板方法设计模式
Template模板模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中.使用Java的抽象类时,就经常会使用到Template模式,因此Template模式使用很普遍.而且很容易理解和使用。 适用条件:1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复...原创 2011-07-04 22:49:05 · 68 阅读 · 0 评论 -
Java设计模式圣经连载(03)-抽象工厂模式
1.3 抽象工厂(Abstract Factory)模式 抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。 每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。 在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。 产品族:是指位于不同...原创 2011-07-05 09:18:31 · 145 阅读 · 0 评论 -
桥接模式
桥接模式是一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是使用继承将无法实现这种需要,或者使得设计变得相当臃肿。举例来说,假设现在我们需要为某个餐厅制造菜单,餐厅供应牛肉面、猪肉面……,而且顾客可根据自己的口味选择是否添加辣椒。此时就产生了一个问题,我们如何来应对这种变化:我们是否需要定义辣椒牛肉面、无辣牛肉面、辣椒猪肉面、无辣猪肉面4个子类?如果餐...原创 2011-07-14 14:27:30 · 113 阅读 · 0 评论 -
设计模式学习之Facade(外观模式)
GOF《设计模式》一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。 大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉...原创 2010-08-11 15:57:31 · 118 阅读 · 0 评论