设计模式
llbupt
这个作者很懒,什么都没留下…
展开
-
代理模式--JDK6.0动态代理的模拟实现
动态代理主要是为了为其他对象提供一种代理以控制对这个对象的访问,比如:想要为代码添加日志,安全控制,权限验证,事务管理等等。本文主要是模拟实现JDK的动态代理的实现,JDK所实现的代理其与其所代理的对象必须实现了相同的接口,也即被代理的对象必须实现某个接口。以下是所有的代码: 接原创 2011-07-21 16:14:01 · 769 阅读 · 0 评论 -
设计模式之--单例模式
1、单例模式的要点: 一是某个类只能有一个实例 二是它必须自行创建这个实例 三是它必须自动向整个系统提供这个实例 2、注意:双重检查成例在java语言中并不能成立 3、饿汉式单例类:是在java语言中实现起来最为简单的单例类,其代码如下: public class EagerSingleton { private static final EagerSin原创 2012-03-19 21:08:40 · 578 阅读 · 0 评论 -
单例模式的陷阱
今天去jdon,看了它的设计研究栏目,bang有几篇评论单例模式的文章,声称“Singleton is evil”(见http://www.jdon.com/jive/article.jsp?forum=91&thread=17578),并且引用几篇外文页面佐证自己的观点,其中有一篇文章更是说,单例不仅不是一种模式,而是一种反模式。 下面我谈谈我对单例模式的看法。逐一分析单例模式转载 2012-03-19 17:07:44 · 914 阅读 · 0 评论 -
设计模式之--原型模式
原始模型模式属于对象的创建模式。通过给出一个原型对象来致命所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是原型模式的用意。 clone()方法将对象复制了一份并返还给调用者。所谓“复制”的含义与clone()方法时怎么实现的有关。一般而言,clone方法满足一下的描述: ①,对任何的对象x,都有x.clone()!=x。也就是说,克隆对象与原对象原创 2012-03-30 17:24:55 · 631 阅读 · 0 评论 -
设计模式之--建造模式
建造模式是对象的创建模式。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以是一个建造过程生成具有不同的内部表象的产品对象。 一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象。使用建造模式可以使客户端在不需要指定所生成的产品对象有哪些零件,每个产品对应的零件彼此有何不同,是怎么建造出来的,以及怎样组成产原创 2012-03-30 16:26:48 · 504 阅读 · 0 评论 -
设计原则之--迪米特法则
迪米特法则,又叫做最少知识原则(Least Knowledge Principle):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 迪米特法则,其根本思想,是强调了类之间的松耦合。 迪米特法则,另外几种表述方式: 只与你直接的朋友们通信(only talk to your im原创 2012-03-30 10:20:29 · 970 阅读 · 0 评论 -
设计模式之--抽象工厂模式
抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用java接口或者抽象java类实现,而所有的具体工厂类必须实现这个java接口或者继承这个抽象的java类。 具体工厂角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体java类实现这个角色。 抽象产品角色:担任原创 2012-03-29 11:36:24 · 491 阅读 · 0 评论 -
设计原则之--依赖倒转原则
在传统的过程性系统的设计办法倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于具体层次。倒转原则就是要把这个错误的依赖关系倒转过来。 依赖(或耦合)关系的分类: 零耦合关系:如果两个类没有耦合关系,就称之为零耦合 具体耦合关系:具体耦合关系发生在两个具体的(可实例化)的类之间,经由一个类对另一个类的直接引用造成。 抽象耦合关系:抽象耦合关系发生在一个具体类和一个抽象类(或者java接口原创 2012-03-29 19:03:45 · 1497 阅读 · 1 评论 -
设计原则之--里氏代换原则
一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出其子类对象和基类对象的区别。 里氏代换原则是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不会受到影响时,基类才能真正的被复用,而衍生类才可能够在基类的基础上增加新的行为。 但是反过来不成立。 java对里氏代换的支持: 在编译时期,java语言编译器会检查一个程序是原创 2012-03-29 19:01:18 · 553 阅读 · 0 评论 -
设计原则之--“开-闭”原则
开-闭原则:一个软件实体(类,模块,函数等等)应当对扩展开放,对修改关闭。英文原文为:Software entities should be open for extension, but closed for modification。 在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,换言之,应当可以在不必修改源代码的情况下改变这个模块的行为。原创 2012-03-29 14:11:15 · 535 阅读 · 0 评论 -
设计模式之--简单工厂模式
简单工厂模式是类的创建模式,又叫做静态工厂方法模式(static factory method)。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 简单工厂模式中的三个角色: 工厂类角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个java类具体实现 抽象产品角色:担任这个角色的类是由工厂方法模式原创 2012-03-29 10:07:04 · 525 阅读 · 0 评论 -
设计模式之--工厂方法模式
工厂方法模式是类的创建模式,又叫做虚拟构造子模式或者多态性工厂模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 在工厂模式方法中,核心的工厂类不再负责所有的产品的创建,而是将具体的创建工作交给子类去做。这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应该被实例化这种细节。原创 2012-03-29 10:08:48 · 527 阅读 · 0 评论 -
设计模式之--观察者模式
观察者模式是对象的行为模式,又叫做发布-订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新。 观察者模式的结构如下: 抽象主题角色:主题角色把所有对观察者对象的引用保存在一个聚集里面,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,主题角色又原创 2012-04-09 09:33:47 · 564 阅读 · 0 评论