摘要: 一、概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。策略模式就是定义了算法族,分别封装起来,让他们之前可以互相转换,此模式然该算法的变化独立于使用算法的客户。在策略模式中它将这些解决问题的方法定义成一个算法群,每一个方法都对应着一个具体的 阅读全文
posted @ 2018-11-13 19:04 小情绪Ango 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 一、概述 为其他对象提供一种代理以控制对这个对象的访问。代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用。它使得客户不能直接与真正的目标对象通信。代理对象是目标对象的代表,其他需要与这个目标对象打交道的操作都是和这个代理对象在交涉。代理对象可以在客户端和目标对象之间起到中介的作用, 阅读全文
posted @ 2018-11-13 16:54 小情绪Ango 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 一、概述 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 二、使用场景 1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 2.处理那些可以撤消的职责。 3.当不能采用生成子类的方法进行扩充时。 三、参与者 1.Component 阅读全文
posted @ 2018-11-12 20:28 小情绪Ango 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 一、概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 二、使用场景 1.当一个系统应该独立于它的产品创建、构成和表示时。 2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。 3.为了避免创建一个与产品类层次平行的工厂类层次时。 4.当一个类的实例只能有几个不同状态组合中 阅读全文
posted @ 2018-11-12 14:42 小情绪Ango 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 一、概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式将复杂产品的构建过程封装分解在不同的方法中,使得创建过程非常清晰,能够让我们更加精确的控制复杂产品对象的创建过程,同时它隔离了复杂产品对象的创建和使用,使得相同的创建过程能够创建不同的产品。但是如果某个产 阅读全文
posted @ 2018-11-12 12:32 小情绪Ango 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一、对比简单工厂模式、工厂方法模式 简单工厂模式只通过一个工厂类,通过给定参数返回相应的实例对象。工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 普通工厂产出是一个产品(实例),抽象工厂产出是一个抽象(接口) 阅读全文
posted @ 2018-11-11 13:16 小情绪Ango 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 一、概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 二、使用场景 1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且 阅读全文
posted @ 2018-11-10 21:34 小情绪Ango 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 一、定义 通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 二、类图 三、理解 Operation为抽象类,它定义了一个抽象方法getResult;OperationAdd和OperationSubtraction两个类为Operation的子类,实现了它的getResu 阅读全文
posted @ 2018-11-10 18:29 小情绪Ango 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 一、概述 单例模式主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。 二、定义 定义:只需要三步就可以保证对象的唯一性 (1) 不允许其他程序用new对象 (2) 在该类中创建对象 (3) 对外提供一个可以让 阅读全文
posted @ 2018-11-09 19:45 小情绪Ango 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一、在Collection集合体系中的位置及概述 TreeSet继承自AbstractSet抽象类,实现了NavigableSet、Serializable、Cloneable、RandomAccess接口。它的特点是存储元素唯一,无序(输入和输出无序)。 TreeSet默认情况下是基于TreeMa 阅读全文
posted @ 2018-11-08 18:55 小情绪Ango 阅读(144) 评论(0) 推荐(0) 编辑