设计模式
JJiaoAo
这个作者很懒,什么都没留下…
展开
-
Java 23种设计模式的有趣见解
[size=medium] 创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时...原创 2012-10-19 09:52:41 · 79 阅读 · 0 评论 -
易学设计模式14 调停者模式(Mediator)
调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。 [b]为什么需要调停者[/b] 如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做...原创 2012-09-13 14:01:18 · 146 阅读 · 0 评论 -
易学设计模式13 状态模式(State)
状态模式(State Pattern)是设计模式的一种,属于行为模式。 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 意图:允许一个对象在其内部状态改变时改变它的行为 适用场景:...原创 2012-09-08 10:23:51 · 93 阅读 · 0 评论 -
易学设计模式11 观察者(Observer)
Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步 1) 抽象目标角色(Subject):目标角色知道它的观察者,可以有任意多个观察者观察同一个目标。并且提供注册和删除观察者对象的接口。目标角色往往由抽象类或者接口来实现。 2...原创 2012-09-06 13:36:20 · 117 阅读 · 0 评论 -
易学设计模式十 单例序列键生成器
数据库有很多种,例如Oracle,DB2,Sybase,MySql,SQL Server等等,他们有的提供主键生成,有的不提供,提供的方式也不一样,如果有的系统需要同时支持多种数据库,就要求主键生成更有通用性,下面就给出解决方案。 使用表存储,表有两个列,一个存放键名,一个存放键值 取值时先更新数据库键值+20;然后查询出增加后的值,例如我们更新后的值是1000,每次增加20,现在可用的k...原创 2012-09-04 21:40:15 · 77 阅读 · 0 评论 -
易学设计模式九 单例模式(Singleton)
单例模式确保某一个类只有一个实例,并且自行实例化向整个系统提供这个实例 [img]http://dl.iteye.com/upload/attachment/0073/2635/ba4a0cd1-21a9-3492-942a-f4e4d48f365f.jpg[/img] 饿汉式 [code="java"] public class EagerSingleton { p...原创 2012-09-03 21:41:09 · 89 阅读 · 0 评论 -
易学设计模式八 工厂方法(Factory Method)
工厂方法模式的用意是定义一个创建产品对象的工厂,将实际的创建工作推迟到子类中。 [img]http://dl.iteye.com/upload/attachment/0073/2613/c56c357d-3bf1-36b2-b7a3-e9de19b77260.jpg[/img] 修改上节中简单工厂模式 抽象工厂 [code="java"] public interface...原创 2012-09-03 20:57:34 · 107 阅读 · 0 评论 -
易学设计模式七 简单工厂(Simple Factory)
简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式,是由一个工厂对象决定创建出哪一种产品类的实例。 本例子一共有七个类,Fruit是抽象类,Apple,Grape,Strawberry是继承了Fruit的具体类,FruitGardener是提供工厂方法(factory)的类,BadFruitException是异常类,Client是测试类。 ...原创 2012-09-02 19:45:48 · 167 阅读 · 0 评论 -
易学设计模式六 代理模式(Proxy)
代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。 [img]http://dl.iteye.com/upload/attachment/0073/1035/e2ddca7c-e148-3ce3-95c1-bb8b0759c33c.gif[/img] [code="java"] public abstract c...原创 2012-08-30 23:16:51 · 95 阅读 · 0 评论 -
易学设计模式五 建造模式(Builder)
遇到多个构造器参数(Constructor Parameters)时要考虑用构建器(Builder) [code="java"] //营养素 public class NutritionFacts { private final int servingSize; private final int servings; private final int calories...原创 2012-08-30 21:34:11 · 146 阅读 · 0 评论 -
易学设计模式四 命令模式(Commond)
命令模式定义 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 [img]http://dl.iteye.com/upload/attachment/0072/9851/d99ee44c-c5e8-3158-9393-43082846568f.jpg[/img] 命令模式有4个角色,一个 ...原创 2012-08-28 16:43:01 · 282 阅读 · 0 评论 -
易学设计模式三 装饰模式(Decorator)
装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 意图: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 设计原则: 1. 多用组合,少用继承。 利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能...原创 2012-08-26 22:31:07 · 106 阅读 · 0 评论 -
易学设计模式二 组合模式(Composite)
[b]组合模式[/b] 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性 适用性 1.你想表示对象的部分-整体层次结构。 2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 [img]http://dl.iteye.com/upload/atta...原创 2012-08-21 16:02:11 · 137 阅读 · 0 评论 -
易学设计模式一 模板 方法(Template Method)
模版方法:抽象类实现部分逻辑,声明一些抽象方法迫使子类实现剩余的逻辑 模版就相当于一个模具,比如做一块金砖,需要一个正方形的模具,这个就相当于一个抽象的模版Abstract Template,倒入的金子就是Concrete Template [img]http://dl.iteye.com/upload/attachment/0072/6663/6b006555-12b3-3dbe...原创 2012-08-19 22:16:23 · 99 阅读 · 0 评论 -
图说设计模式 (一)Strategy
很久很久以前, 野鸭(MallardDuck)和 红头鸭(RedheadDuck)继承自Duck。 [img]http://dl.iteye.com/upload/attachment/0071/4056/59c14bca-7c45-3b97-b4b1-28e4dfecc25b.png[/img] 现在我们想让鸭子飞起来 [img]http://dl.iteye.com/uplo...原创 2012-07-27 11:52:07 · 114 阅读 · 0 评论 -
易学设计模式15 解释器模式(Interpreter)
解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 结构 [img]http://dl.iteye.com/upload/attachment/0073/7787/0bdd1377-90d4-3f5a-ba99-fbfba0df16d4.jpg[/img] (1)抽象表达式(Expr...原创 2012-09-13 16:47:33 · 86 阅读 · 0 评论