![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式(Design Pattern)
MichaelSongs
这个作者很懒,什么都没留下…
展开
-
设计模式(14)-Strategy 策略模式
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。原创 2017-06-05 09:30:38 · 3187 阅读 · 0 评论 -
设计模式(15)-Memento 备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 (类似缓存、队列)原创 2017-06-07 09:06:12 · 3070 阅读 · 0 评论 -
设计模式(11)-Composite 组合模式
将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。总公司、各地分公司、办事处层级;原创 2017-06-02 19:29:41 · 3008 阅读 · 0 评论 -
设计模式(12)-Decorator 修饰模式
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。原创 2017-06-02 19:40:43 · 2937 阅读 · 0 评论 -
设计模式(13)-Visitor 访问者模式
表示一个作用于某对象结构中的各元素的操作。该模式可以实现在不改变各元素的类的前提下定义作用于这些元素的新操作。原创 2017-06-03 11:59:55 · 3198 阅读 · 0 评论 -
设计模式(20)-Command 命令模式
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。原创 2017-07-02 22:45:21 · 2628 阅读 · 0 评论 -
设计模式(21)-Mediator 中介者模式
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的内部表示。原创 2017-07-02 22:51:21 · 2766 阅读 · 0 评论 -
设计模式(16)-Observer 观察者模式
定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。原创 2017-06-11 21:51:13 · 3022 阅读 · 0 评论 -
设计模式(17)-Template Method 模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 SpringJdbcTemplate中使用模板方法JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法.模板方法模式是抽象类的一个典型应用:原创 2017-06-11 21:53:46 · 2796 阅读 · 0 评论 -
设计模式(18)-Iterator 迭代器
提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。原创 2017-06-25 18:46:49 · 2787 阅读 · 0 评论 -
设计模式(10)-Flyweight 享元模式
意图:运用共享技术有效地支持大量细粒度的对象。在享元模式中,有一个至关重要的模块就是工厂模块。 Flyweight 模式的有效性很大程度上取决于如何使用它以及在何处使用它。当以下情况成立时使用 Flyweight 模式:1 一个应用程序使用了大量的对象。 2 完全由于使用大量的对象,造成很大的存储开销。 3 对象的大多数状态都可以变为外部状态。 4 如果删除对象原创 2017-06-02 16:57:22 · 2929 阅读 · 0 评论 -
设计模式(9)-Proxy 代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。意图:为其他对象提供一种代理以控制对这个对象的访问。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建原创 2017-06-02 16:51:07 · 3462 阅读 · 0 评论 -
设计模式-设计准则
设计模式的设计准则~原创 2017-06-01 15:22:09 · 3222 阅读 · 0 评论 -
设计模式(2)-Builder 建造者模式
(Builder Pattern):使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 应用场景:在Java的应用中JavaMail使用到了该模式建造模式分成两个很重要的部分: 1. 一个部分是原创 2017-06-01 15:35:59 · 3111 阅读 · 0 评论 -
设计模式(3)-Prototype 原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 原型模式(PrototypePattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以原创 2017-06-01 15:39:53 · 3056 阅读 · 0 评论 -
设计模式(4)-Factory工厂模式
工厂方法模式(FactoryMethod) : 定义一个用于创建对象的接口,让子类决定实例化了哪个类。工厂方法使一个类的实例化延迟到其子类。用于生产同一等级结构中的固定产品。(支持增加任意产品)特点:(1)工厂方法模式是简单工厂模式的进一步抽象和推广。 (2) 使用了多态性,工厂方法模式保持了简单工厂模式的优点,克服了它缺点。工厂应该创建并返回类的实例。区别原创 2017-06-01 21:07:47 · 2872 阅读 · 0 评论 -
设计模式(1)-Abstract Factory 抽象工厂模式
抽象工厂模式相对于工厂方法模式来说,每个具体工厂可以生产一族产品(即多种产品);而工厂方法模式是具体工厂生产相应的具体产品,只能生产一种产品。当产品族中只有一种产品时抽象工厂模式退化成工厂方法模式。 UML图如下:原创 2017-06-01 15:31:44 · 3185 阅读 · 0 评论 -
设计模式(5)-Singlton 单例模式
应用场景:配置文件读取、数据库连接池、多线程连接池、网站计算器等 从实现角度分为:饿汉式和懒汉式;从线程安全角度分为:不使用同步锁、使用同步方法、使用双重检查同步锁。饿汉模式,空间换时间原创 2017-06-01 21:16:50 · 2878 阅读 · 0 评论 -
设计模式(6)-Bridge 桥接模式
将抽象部分与实现部分分离,使它们都可以独立的变化。 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。原创 2017-06-01 21:24:31 · 2959 阅读 · 0 评论 -
设计模式(7)-Adapter 适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您原创 2017-06-02 16:40:46 · 3303 阅读 · 0 评论 -
设计模式(8)-Facade 外观模式
隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。原创 2017-06-02 16:44:39 · 3067 阅读 · 0 评论 -
设计模式(19)-State 状态模式
允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 适用场景:一个对象的行为取决于他的状态,并且它必须在运行时根据状态改变它的行为;一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。原创 2017-06-25 19:06:20 · 2789 阅读 · 0 评论