
设计模式
文章平均质量分 61
huoming550
这个作者很懒,什么都没留下…
展开
-
DDD
http://www.jdon.com/jivejdon/thread/34255.html 1. 主要从三个维度去考虑 1.1 静态 静态主要是考虑关系学,分为包的关系,类的关系,根的聚合关系,通过不同层次的关系,分而治之,形成一个良性有序的关系类图。 类的关系:领域职责和业务决定 根的聚合:主要考虑不变量关系,那些类应该在此根聚合中,并保持不变量关系,那些在此聚合中,但...原创 2008-11-25 17:40:30 · 225 阅读 · 0 评论 -
工厂模式与OO设计原则
如果把创建看作一个职责,那么系统中的哪个对象应该拥有这个职责呢?如果把创建看作知识,那么创建知识应该放置在什么地方呢?说到职责我们不得不说一下著名的GRASP原则: GRASP是通用职责分配软件模式(General Responsibility Assignment Software patterns)的简称。它包含了9大模式,分别如下所示: 1 创建者(Creator) :决...原创 2008-12-02 01:50:39 · 92 阅读 · 0 评论 -
OO设计原则----依赖倒置原则(DIP)
这是一个类与类之间调用规则,术语上解释就是对于组合之间的规范。DIP的主要思想是如果一个类的一个成员或参数为一个具体类型,那么这个类就依赖于那个具体类型。如果在一个继承结构中,上层类中的一个成员或参数为一个下层类型,那么这个继承结构就是高层依赖于底层了。个人理解:就是尽量面向接口或抽象编程。把具体类型变成一个抽象的标示,什么改变的时候有问题?如果有问题那么就是抽象的地方具体类无法进行代...原创 2008-12-02 01:52:21 · 163 阅读 · 0 评论 -
领域模型的价值与困境
很久以前大家就关于这个方面有很多讨论了。前两天我又挖了一个坑来集思广益,非常感谢没有把我的帖子投为新手帖的同志。我不是在装傻,只是想让大家跳出自己的立场,从根本的价值出发来考虑问题。之前有很多讨论,都是在讨论我又发明了一种新方法可以让领域模型充血啦,等等之类的。当提出一个解决方案的时候,一定要有明确的问题。那么领域模型的价值是什么?为什么没有被广泛应用,其困境在哪里? 价值 数据,...原创 2008-12-04 17:02:21 · 573 阅读 · 0 评论 -
对领域模型实现的总结性观点
陶文发起的对领域模型的最新讨论:领域模型的价值与困境,在这个讨论当中,我的关注点是,在现在的技术水平下,我们如何把领域模型的理论和我们实际应用开发框架结合起来,总结出最佳实践: 第一、DAO层和TransactionScript层是邪恶的! 我们在2004年一直跨度到2007年讨论来讨论去,其实都有一个隐含的前提条件:你的领域模型终究无法脱离对DAO层的依赖,以及需要Transac...原创 2008-12-04 17:14:33 · 422 阅读 · 0 评论 -
深入理解敏捷开发的常见九大误区
任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。敏捷相对以前的软件工程最大的革新之处在于把人的作用提高到了过程至上,正如敏捷宣言的第一条“个体和交互胜过过程和工具”所说的。1、敏捷是“一个”过程敏捷不是一个过程,是一类过程的统称,它们有一个共性,就是符合敏捷价值观,遵循敏捷的原则。敏捷的价值观如下:◆个体和交互 胜过 过程和工具◆可以工作的软件 胜过 ...原创 2008-12-05 11:16:48 · 238 阅读 · 0 评论 -
什么是敏捷开发?
敏捷开发(agile development)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 敏捷开发是全新理论吗?答案莫衷一是。细心的人们可以发现,敏捷开发其实借鉴了大量软...原创 2008-12-05 11:17:26 · 88 阅读 · 0 评论 -
RUP
[img]/upload/attachment/59087/d785d8e2-6633-3dfe-9d5e-2391020cfb63.jpg[/img]RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。根据Rational(Rational Rose和统一建模语言的开发者)的说法,好像一个在线的指导者,它...原创 2008-12-12 16:53:45 · 118 阅读 · 0 评论 -
SOA 案例研究:SOA 设计
[url]http://www.ibm.com/developerworks/cn/webservices/redbooks/soa-case/8.html[/url]developerWorks 中国, 编辑团队, IBM 2008 年 6 月 26 日本文是面向服务的体系结构 (SOA) 系列之一,主要通过名为 JKHL Enterprises (JKHLE) 的虚构公司阐...原创 2008-12-17 15:00:06 · 145 阅读 · 0 评论 -
SOA实践 -- 使用IoC和AOP重构SOA应用
在本文中,作者通过一个Web Service访问的实例,具体描述了SOA应用中所遇到的一系列具体问题,并描述如何利用IoC和AOP等技术进行代码重构,从而构建结构更加良好、灵活的SOA应用。1.引言SOA是一种构造分布式系统的方法,它将业务应用功能以服务的形式提供出来,以便更好的复用、组装和与外部系统集成,从而降低开发成本,提高开发效率。SOA的目标是为企业构建一个灵活,可扩展的IT基础架...原创 2008-12-18 15:35:23 · 188 阅读 · 0 评论 -
分布式软件系统
分布式软件系统(Distributed Software Systems) 是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。 分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 ...原创 2008-12-18 15:49:44 · 753 阅读 · 0 评论 -
Java 理论与实践: 用动态代理进行修饰
动态代理是构建 Decorator 和 Adapter 的方便工具 文档选项 打印本页 将此页作为电子邮件发送 讨论 级别: 中级Brian Goetz (brian@quiotix.com), 首席顾问, Quiotix2005 年 9 月 12 日动态代理工具 是 java.lang.re...原创 2008-12-18 17:41:14 · 106 阅读 · 0 评论 -
设计模式之--动态代理
动态代理类是一个在运行时由开发人员所指定的一列接口的实现。动态代理接口是一种由代理类实现的接口,并且是一个java.lang.reflect.Proxy类的实例。每一个代理实例都与一个调用处理器对象相联,这个调用处理器实现了java.lang.reflect.InvocationHandler接口。在代理实例上的一个方法调用是通过其中之一的代理接口被转发到与这个代理实例相联的调用处理的invoke...原创 2008-11-26 18:03:27 · 84 阅读 · 0 评论 -
Facade外观模式
GOF《设计模式》一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。 大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很文件的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然...原创 2008-11-26 16:06:08 · 105 阅读 · 0 评论 -
Adapter适配器模式
GOF《设计模式》一书对Adapter模式是这样描述的: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。 这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:1) 为都有“显示”(display)行为的点、线、正方形分别创建类。2) 客户对...原创 2008-11-26 16:05:40 · 99 阅读 · 0 评论 -
设计模式遐想
设计模式遐想Proxy 比如你去相亲,找个媒人,然后让媒人去查看对方的条件。她帮你完成一些检查工作(就像计算机中的权限检查之类的工作)。 你的好处就是不用亲自去做,委托给别人就行。那么你本身所做事情就非常少了(降低本身的复杂度)。 但是你要出钱啊,(在计算机就是性能要消耗)。 同时你还要去告诉他做什么事情,在java中,你需要去编写这个代理类。 如果扩展下,你找房子可以...原创 2008-11-25 17:41:09 · 89 阅读 · 0 评论 -
Builder建造者模式
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。刚接触到这个模式的时候,实在搞不明白它的意思,有什么用。于是,上网google了一圈,终于得到这个大家普遍认可的解释:建造模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节。下面举一个例子来说明这个模式的使用,代码...原创 2008-11-26 15:56:22 · 71 阅读 · 0 评论 -
Prototype原型模式
Prototype模式的意图是: 通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。 在java的类库中已经实现了这一模式,只要你定义的类实现了Cloneable接口,用这个类所创建的对象可以做为原型对象进而克隆出更多的同类型的对象。下面举个例子,来介绍简单的介绍一下它的使用。import java.io.ByteArrayInputSt...原创 2008-11-26 15:57:00 · 102 阅读 · 0 评论 -
Factory Method模式
《设计模式》一书对Factory Method模式是这样描述的: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它...原创 2008-11-26 15:57:42 · 86 阅读 · 0 评论 -
Singleton模式
《设计模式》一书对Singleton模式是这样描述的:保证一个类只有一个实例,并提供一个访问它的全局访问点。这个模式比较简单,下面给出一个例子:public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleto...原创 2008-11-26 15:58:08 · 124 阅读 · 0 评论 -
Template Method模式
factory模式(包括简单工厂和抽象工厂),Strategy模式,Template method模式是学习Spring框架必不可少的。《设计模式》一书对Template Method模式是这样描述的: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重新定义它的步骤。 我的理解:定义一个抽象类或者说接口,在它的内部定义一些抽象的方法(供TemplateMet...原创 2008-11-26 15:58:43 · 99 阅读 · 0 评论 -
Observer观察者模式
《设计模式》一书对Observer是这样描述的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。举个例子,在现实生活中,父母与孩子是最亲密的人。父母做为孩子(被观察者)的监护人(观察者),当孩子和别人打架后,一定会告诉他的父母这件事(呵呵,当孩子很小时,通常会告诉父母,长大了以后,可能不会,这里的孩子指的是小孩子),当孩子获得奖学金后...原创 2008-11-26 15:59:19 · 93 阅读 · 0 评论 -
Decorator装饰模式
《设计模式》一书对Decorator是这样描述的: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。也就是说:动态地给对象添加一些额外的功能。它的工作原理是:创建一个始于Decorator对象(负责新功能的对象)终止于原对象的一个对象的“链”。例如,我们要为超市的收银台设计一个打印票据的程序,有的需要打印票据的头信息,有的需要打印票据的页脚信息...原创 2008-11-26 16:01:03 · 78 阅读 · 0 评论 -
Abstract Factory抽象工厂模式
GOF《设计模式》一书对Abstract Factory模式是这样描述的: 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。 大致意思是说:我们在创建这些对象的时候,并不需要指定它们的具体类,这些具体类的对象是由工厂对象负责实例化的。下面是《Design Patterns Explained》一书的例子,有关计算机系统的显示和打印程序,用来显示和打印的分辨...原创 2008-11-26 16:03:14 · 108 阅读 · 0 评论 -
Bridge桥接模式
设计模式》一书对Bridge是这样描述的:将抽象与其实现解耦,使它们都可以独立地变化。大致意思是说:将一组实现与另一组使用他们的对象分离。这里的实现指的是抽象类及其派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)。下面是《Design Patterns Explained》书中的例子。其结构图如下: [img]/uplo...原创 2008-11-26 16:04:38 · 96 阅读 · 0 评论 -
Strategy策略模式
GOF《设计模式》一书对Strategy模式是这样描述的: 定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。 Strategy模式以下列几条原则为基础:1) 每个对象都是一个具有职责的个体。2) 这些职责不同的具体实现是通过多态的使用来完成的。3) 概念上相同的算法具有多个不同的...原创 2008-11-26 16:05:08 · 146 阅读 · 0 评论 -
利用动态代理的 Java 验证
从业务对象实现中去耦验证过程 文档选项 打印本页 将此页作为电子邮件发送 样例代码 级别: 初级Eric Olson (eric.olson@lakeviewtech.com), 软件工程师, Lakeview Technologies2004 年 9 月 14 日Java 平台的 1.3 版...原创 2008-12-18 17:41:51 · 119 阅读 · 0 评论