寂寞的风永不搁浅

学习之初 多为转载 未名出处 敬请见谅 点滴积累 必有作为

博客园 首页 新随笔 联系 订阅 管理

2008年12月4日 #

摘要: 一、创建型模式1、Factory追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何... 阅读全文
posted @ 2008-12-04 16:20 景阳 阅读(237) 评论(0) 推荐(0) 编辑

摘要: 结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)。这些结构型模式,它们在某些方面具有很大的相似性,仔细推敲,侧重点却各有不同。本文试图对这几种结构型模式做一个简单的小结。 阅读全文
posted @ 2008-12-04 15:42 景阳 阅读(183) 评论(0) 推荐(0) 编辑

摘要: 创建型模式,就是用来创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模式。 阅读全文
posted @ 2008-12-04 15:39 景阳 阅读(187) 评论(0) 推荐(0) 编辑

摘要: 在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。 阅读全文
posted @ 2008-12-04 11:56 景阳 阅读(171) 评论(0) 推荐(0) 编辑

摘要: 定义一系列的算法,把它们一个一个封装起来,并且使它们可相互替换。本模式使得算法可以独立于它的客户而变化。 阅读全文
posted @ 2008-12-04 11:53 景阳 阅读(169) 评论(0) 推荐(0) 编辑

摘要: 策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 阅读全文
posted @ 2008-12-04 11:52 景阳 阅读(258) 评论(0) 推荐(0) 编辑

摘要: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 阅读全文
posted @ 2008-12-04 11:48 景阳 阅读(170) 评论(0) 推荐(0) 编辑

摘要: 变化一直以来都是软件设计的永恒话题,在XP编程中提倡拥抱变化,积极应对。如何更好的去抓住变化点,应对变化?如何更好的提高代码复用?通过学习Template Method模式,您应该有一个新的认识。 阅读全文
posted @ 2008-12-04 11:47 景阳 阅读(190) 评论(0) 推荐(0) 编辑

摘要: 准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。 阅读全文
posted @ 2008-12-04 11:45 景阳 阅读(255) 评论(0) 推荐(0) 编辑

摘要: 实现通过统一的接口访问不同类型元素的操作,并且通过这个接口可以增加新的操作而不改变元素的类。 阅读全文
posted @ 2008-12-04 11:43 景阳 阅读(218) 评论(0) 推荐(0) 编辑

摘要: 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 阅读全文
posted @ 2008-12-04 11:41 景阳 阅读(302) 评论(0) 推荐(0) 编辑

摘要: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 阅读全文
posted @ 2008-12-04 11:35 景阳 阅读(190) 评论(0) 推荐(0) 编辑

摘要: 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。 阅读全文
posted @ 2008-12-04 11:34 景阳 阅读(245) 评论(0) 推荐(0) 编辑

摘要: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 阅读全文
posted @ 2008-12-04 11:31 景阳 阅读(290) 评论(0) 推荐(0) 编辑

摘要: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 阅读全文
posted @ 2008-12-04 11:29 景阳 阅读(206) 评论(0) 推荐(0) 编辑

摘要: 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合[李建忠]。这就是本文要说的Command模式。 阅读全文
posted @ 2008-12-04 11:28 景阳 阅读(157) 评论(0) 推荐(0) 编辑

摘要: 命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 阅读全文
posted @ 2008-12-04 11:26 景阳 阅读(253) 评论(0) 推荐(0) 编辑

摘要: 将抽象部分与实现部分分离,使它们都可以独立的变化。 阅读全文
posted @ 2008-12-04 11:24 景阳 阅读(190) 评论(0) 推荐(0) 编辑

摘要: 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。 阅读全文
posted @ 2008-12-04 11:20 景阳 阅读(177) 评论(0) 推荐(0) 编辑

摘要: 桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。 阅读全文
posted @ 2008-12-04 11:18 景阳 阅读(254) 评论(0) 推荐(0) 编辑