
设计模式
文章平均质量分 85
风风不息
这个作者很懒,什么都没留下…
展开
-
JAVA设计模式初探之桥接模式
生活中的一个例子: 拿汽车在路上行驶的来说。既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也有不同类型,在软件系统中就要适应两个方面(不同车型,不同道路)的变化,怎样实现才能应对这种变化呢? 概述: 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“转载 2015-12-15 19:34:53 · 291 阅读 · 0 评论 -
Java设计模式之策略模式
本文继续介绍23种设计模式系列之策略模式。 背景 在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可转载 2015-12-15 19:59:18 · 394 阅读 · 0 评论 -
Java设计模式之状态模式
本文继续介绍23种设计模式系列之策略模式。 何时使用 State模式在实际使用中比较多,适合“状态”的切换。因为我们经常会使用If else if else 进行状态切换,如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了。 这里要阐述的是"开关切换状态" 和" 一般的状态判断"是有一些区别的," 一般的状态判断"也是有 if..elseif结转载 2015-12-15 20:57:22 · 316 阅读 · 0 评论 -
Java设计模式之模板方法模式(Template Method)
本文继续介绍23种设计模式系列之模板方法模式。 概述 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变转载 2015-12-15 20:57:54 · 374 阅读 · 0 评论 -
Java设计模式之观察者模式
本文继续介绍23种设计模式系列之观察者模式。 观察者模式中,一个被观察者管理所有相依于它的观察者物件,并且在本身的状态改变时主动发出通知。这通常通过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。 角色 抽象被观察者角色:把所有对观察者对象的引用保存在一个集合中,每个被观察者角色都可以有任意数量的观察者。被观察者提供一个接口,可以增转载 2015-12-15 20:58:44 · 319 阅读 · 0 评论 -
Java设计模式之迭代子模式
本文继续介绍23种设计模式系列之迭代子模式。 定义 在软件构建过程中,集合对象内部结构常常变化各异,但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为同一种算法在多种集合对象上进行操作提供了可能。 使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式转载 2015-12-15 20:59:12 · 362 阅读 · 0 评论 -
Java设计模式之备忘录模式
本文继续23种设计模式系列之备忘录模式。 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进行返回。下象棋的时候,可以反悔。这时我们便可以使用备忘录模式来实现。 定义 在不破坏封装性的前提下,转载 2015-12-16 10:27:48 · 363 阅读 · 0 评论 -
Java 设计模式之中介者模式
本文继续23种设计模式系列之中介者模式。 定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 角色 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。 中介者实现类:从抽象中介者继承而来,转载 2015-12-16 10:29:09 · 274 阅读 · 0 评论 -
Java设计模式之责任链模式、职责链模式
本文继续介绍23种设计模式系列之职责链模式。 什么是链 1、链是一系列节点的集合。 2.、链的各节点可灵活拆分再重组。 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。 角色 抽象处理者角色(Handl转载 2015-12-15 20:59:47 · 402 阅读 · 0 评论 -
Java设计模式之命令模式
本文继续介绍23种设计模式系列之命令模式。 定义 将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。 角色 Command 定义命令的接口,声明执行的方法。 ConcreteCommand 命令接口实现对象,是“虚”转载 2015-12-15 21:00:14 · 280 阅读 · 0 评论 -
java设计模式之建造者模式
本文继续介绍23种设计模式系列之建造者模式。 定义: 建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 实用范围 1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2、当构造过程必须允许被构造的对象有不同表示时。 角色 在这样的设计模式中,有以下几个角色转载 2015-12-15 19:57:37 · 318 阅读 · 0 评论 -
JAVA设计模式之抽象工厂模式
本文继续介绍23种设计模式系列之抽象工厂模式。 前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例。 例子背景: 随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。这时候工厂有两个系列的产品:空调和发动机。宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B转载 2015-12-15 19:57:07 · 371 阅读 · 0 评论 -
JAVA设计模式初探之适配器模式
1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 下面是两个非常形象的例子 3. 模式中的角色 3.1 目标接口转载 2015-12-15 19:41:46 · 203 阅读 · 0 评论 -
JAVA设计模式初探之组合模式
先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。” 就拿剪发办卡的事情来分析一下吧。 首先,一张卡可以在总部,分店,加盟店使用,那么总部可以刷卡,分店也可以刷卡,加盟店也可以刷卡,这个属性结构的店面层级关系就明确啦。 那么,总店刷卡消费与分店刷卡消费是一样的道理,那么总店与分店对转载 2015-12-15 19:43:46 · 281 阅读 · 0 评论 -
JAVA设计模式初探之装饰者模式
这个模式花费了挺长时间,开始有点难理解,其实就是 定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。 设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的转载 2015-12-15 19:44:29 · 227 阅读 · 0 评论 -
JAVA设计模式之门面模式(外观模式)
医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 首先病人必须先挂号,然后门诊。如果医生要求化验转载 2015-12-15 19:50:16 · 245 阅读 · 0 评论 -
JAVA设计模式之享元模式
解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。比如说一个文本系统,每个字母定一个对象,那么大小写字母一共就是52个,那么就要定义52个对象。如果有一个1M的文本,那么字母是何其的多,如果每个字母都定义一个对象那么内存早就爆了。那么如果要是每个字母都共享一个对象,那么就大大节约了资源。 在Flyweight模式中,由于要产生各种各样转载 2015-12-15 19:52:55 · 259 阅读 · 0 评论 -
JAVA设计模式之代理模式
【代理模式应用场景举例】 比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OO转载 2015-12-15 19:54:25 · 204 阅读 · 0 评论 -
JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部转载 2015-12-15 19:55:09 · 245 阅读 · 0 评论 -
JAVA设计模式之原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clo转载 2015-12-15 19:55:39 · 243 阅读 · 0 评论 -
23种设计模式汇总整理
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式转载 2015-12-15 19:56:45 · 243 阅读 · 0 评论 -
Java设计模式之访问者模式
本文继续23种设计模式系列之访问者模式。 定义 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 [java] view plaincopyprint? class A { public void method1(){ Sys转载 2015-12-16 10:28:36 · 261 阅读 · 0 评论