无
分类: Java
2014-07-31 14:24:07
提问:我正在学习GoF的《》,想了解些它们在实际中的应用的例子。大家能给我举一些使用设计模式的好例子吗?尤其是在Java类库中。
赞同最高的回答:
你可以通过对设计模式有个整体上的理解。Wikipedia上也提高了GoF所涉及到的模式。我这里总结一下,并且尽可能指出在JavaSE与JavaEE的API中是如何运用这些模式的。
特点:创建方法返回一个可以用来创建抽象类或接口的工厂类。
特点:创建方法返回这个实例本身。
特点:创建方法返回抽象类或接口的实现。
特点:创建方法返回一个同类型且具有相同属性的另一个实例。
特点:创建方法返回同一个实例(无论在何时调用)。
特点:创建方法接受一个与当前类不同的抽象类或接口的实例作为参数,返回一个经过修饰或重写给定参数实例的抽象类或接口的实现。
特点:创建方法接受一个与当前类不同的抽象类或接口的实例作为参数,返回一个经过代理或使用给定参数实例的抽象类或接口的实现。
特点:行为方法把相同抽象类或接口的实例转化为一个树结构。
特点:创建方法以一个抽象类或接口的实例为参数,返回值是增加了额外方法的给参数实例。
特点:行为方法在内部使用完全不同的抽象类或接口的实例做封装。
特点:创建方法返回一个缓存的实例,与多例模式有些类似。
特点:创建方法返回一个给定抽象类或接口的实例,这个实例代理或使用了这个给定抽象类或接口的另一个实现。
恕我直言,Wikipedia上的类子不是很好,惰性加载实际上和代理模式一点关系也没有。
特点:行为方法间接调用队列中同一抽象类或接口的另一实例的同名方法。
特点:一个抽象类或接口中的行为方法调用另一个在创建时经命令方法包装的抽象类或接口实现的另一个方法。
特点:行为方法返回结构上不同的抽象类或接口的实例,需要注意的是解析或格式化过程并不是这个模式的一部分,而这个过程决定了解释器如何将要去应用并实施这个变换。
特点:行为方法连续地返回队列中的相同对象的不同实例。
特点:行为方法接受一个不同的抽象类或接口的实例(一般使用命令模式)作为参数,而这个参数同时也代理了其它给定抽象类或接口的实例。
特点:行为方法在内部改变整个实例的状态。
特点:行为方法根据其自身的状态,去调用另一个抽象类或接口实例的方法。
特点:行为方法根据它能够控制的状态来变自身的行为。
特点:在一个抽象类或接口的行为方法会调用作为一种策略实现而通过参数传入的另一个抽象类或接口实例的方法。
特点:具有由抽象类型定义默认行为的行为方法。
特点:由两个不同的抽象类或接口,它们都有接受对方做参数的方法,被调用的方法会去调用另一个对象的方法,然后根据制定好的策略执行。