设计模式
文章平均质量分 75
山上的太阳
这个作者很懒,什么都没留下…
展开
-
Callback 回调模式
调用一个方法时,向该方法除了传数据之外,还要向该方法中传一段代码,并且在该方法中调用这段代码(这段代码一般在接口里定义,在匿名类里实现)。 学生筛选系统: public class Student { private String name; private int age; private double score; public Student(String name, int原创 2015-05-04 21:45:36 · 509 阅读 · 0 评论 -
工厂方法(Factory Method)模式
在创建类时,通常可以同时定义多个构造方法,然后让它们创建类的实例。然而有时候,客户代码虽然需要某个对象,却并不关心或者不需要关心这个对象究竟是由哪个类创建而来的。 工厂方法模式的意图是定义一个用于创建对象的接口,并控制返回哪个类的实例。 迭代器(Iterator)模式提供了用于顺序访问容器中的各个元素的方法。但是,迭代器实例却经常需要运用工厂方法模式来创建。java JDK原创 2015-05-08 21:11:06 · 539 阅读 · 0 评论 -
单例模式
从形式上来看,Singleton Pattern是所有模式中最简单的一种,但是细究起来并不像想象中那么简单。 Singleton的实现有多种方式(见下表及文后所附代码示例)。最基本的是第一种实现,这种实现最大的问题就是不支持多线程。《Head First Design Pattern》第五章列举了三种支持多线程的单例模式实现方式(表中第二、三、四种),这三种实现方式在性能上转载 2015-09-01 22:15:08 · 359 阅读 · 0 评论 -
组合模式
组合模式(Composite): 是一组对象的组合,这些对象可以是容器对象,表现为组的概念:另外一些对象则代表了单个对象,或成为叶子对象。在对组合进行建模时,必须注意两个重要的概念。第一个概念是组对象允许包含单对象,也可以再包含其他的组对象(常见的错误是将组对象设计为只允许包含叶子对象)。第二个概念则是要为组合对象和单对象定义共同的行为。就可以为组对象与单对象定义统一的类型,并将该组对象原创 2015-05-08 21:02:51 · 368 阅读 · 0 评论 -
代理模式
代理模式是在不改变源码的情况下增加已有方法的功能。要使用代理模式的前提是:被代理的类实现了一个接口。代理模式分为静态代理模式与动态代理模式。 静态代理模式: 只是在实现与被代理类相同的接口,在代理对象力穿一个被代理类的对象。具体实现如下代码: class ProxyList implements List{ List target; public Pr原创 2015-05-19 21:34:53 · 408 阅读 · 0 评论 -
适配器(Adapter)模式
客户端就是需要调用我们代码的对象。通常,在代码已经存在的情况下编写客户端代码,开发人员可以采取模拟客户端的方法调用我们提供的接口对象。然而,客户端代码也可能与你的代码单独进行开发。例如,设计的火箭方针程序会使用你所提供的火箭信息,但是对于火箭应该拥有怎样的行为,仿真器也会拥有自己的定义。在这样的情况下,会发现现有的类虽然提供了客户端需要的服务,却被定义为不同的方法名。这事,我们就需要运用适配器模式原创 2015-05-08 21:19:46 · 457 阅读 · 0 评论 -
观察者模式
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 2. 解决的问题 将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带原创 2016-02-04 14:48:00 · 434 阅读 · 0 评论