设计模式
常见设计模式
bingaPang
good good study, day day up!
展开
-
设计模式之责任链模式
目录责任链模式的介绍责任量模式实例责任链模式的优缺点责任链模式在源码中的应用责任链模式的介绍责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式的使用场景:有多个对象可以处理一个请求,哪个对象处理该请求运行时自动确定。在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。可处理一个请求的对象集合应该被动态指定。责任链模式的结构:责任链模式的角色说明:Handler原创 2020-08-17 11:54:28 · 160 阅读 · 0 评论 -
设计模式之观察者模式
目录观察者模式介绍观察者模式实例观察者模式的优缺点观察者模式在源码中的应用观察者模式介绍观察者模式:定义对象间的一对多依赖关系,当一个对象的状态发生改变是,所有依赖于他的对象都得到通知并被自动更新。观察者模式的适用场景:一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这二者封装在独立的对象中,使他们可以相互独立的改变和和复用。对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变。一个对象必须通知其他对象,而它又不能假定其他对象是谁,换言之,你不希望这些对象是紧耦合的。原创 2020-08-16 11:51:08 · 104 阅读 · 0 评论 -
设计模式之模板方法模式
目录模板方法模式的介绍模板方法示例模板方法模式的优缺点模板方法模式在源码中的使用模板方法模式的介绍模板方法的定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类在不改变一个算法的结构即可重新定义该算法的某些特定步骤。我们考虑这么一种场景,假设我们需要读取文件,然后将读取出来的数据转换成实体类并存入数据库,然而文件的格式是不同的,有如下:binga@18@Beijing@[email protected]@20|Shanghai@[email protected]@原创 2020-08-15 13:44:19 · 119 阅读 · 0 评论 -
设计模式之策略模式
目录策略模式的定义和介绍策略模式示例策略模式的优缺点策略模式在源码中的使用策略模式的定义和介绍策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。从模式定义来看,策略模式着重的是对算法的分装以及调用,而不是注重算法的实现。策略模式的使用场景:许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系统需要动态地在几种算法中选择一种。需要使用一个算法的不同变体。例如,你可能会定原创 2020-08-14 14:25:48 · 99 阅读 · 0 评论 -
设计模式之装饰者模式
这里写目录标题装饰模式介绍和结构装饰者模式示例代码装饰者模式的优点和缺点装饰模式介绍和结构装饰者模式:动态的给一个对象添加一些额外的职责。装饰者模式的使用场景:在不影响其他对象的情况下,以动态、透明的方法给单个对象添加职责。处理那些可以撤销的职责。(所有的职责均不可撤销的话则使用继承可以更好的进行扩展)。当不能使用生成子类的方法进行扩充时。这一般包含两种情况。一种情况是可能有大量独立扩展、为支持每一种组合而需要产生大量子类,使得子类数目呈爆炸式增长。另一种情况就是,类定义被隐藏或者类被定义为不原创 2020-08-12 22:06:47 · 136 阅读 · 0 评论 -
设计模式之适配器模式
这里写目录标题适配器模式的介绍和定义适配器模式结构和实现类适配器模式对象适配器模式适配器模式的优缺点对象适配器模式类适配器模式对象适配器模式适配器模式源码中的应用适配器模式的介绍和定义适配器模式,即定义一个包装类,用于包装不兼容接口的对象,从而使原本由于接口不兼容而不能一起工作的那些类可以在一起工作。适配器模式具有两种:类适配器模式;对象适配器模式;适配器模式的应用场景:当你希望使用某些现有的类,但其接口与您的其他代码不兼容是,请使用适配器类。当你希望重用几个现有的子类,这些子类缺少一原创 2020-08-12 14:50:06 · 116 阅读 · 0 评论 -
设计模式之门面模式
这里写目录标题门面模式定义和结构门面模式示例门面模式的优缺点及适用性门面模式的注意点门面模式定义和结构门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。将一个系统划分成若干个子系统有利于降级系统的复杂。一个常见的设计目标就是使子系统之间的通信和相互依赖关系降到最低,实现该目标的途径之一就是通过引入一个外观(原创 2020-08-06 17:53:01 · 137 阅读 · 0 评论 -
设计模式之享元模式
这里写目录标题享元模式的定义和结构享元模式的实现享元模式的适用性及优缺点JDK中享元模式的使用String中享元模式的使用Short、Character、Integer和Long等使用享元模式减少对象的创建享元模式的定义和结构享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用,享元模式是构造型模式之一,它通过共享数据使得相同对象在内存中仅创建一个实例,以降低系统创建对象实例的性能消耗。如JDK中的String的常量池,就是使用的享元模式。public stat原创 2020-08-05 10:33:28 · 155 阅读 · 0 评论 -
设计模式之原型模式
这里写目录标题原型模式的介绍和定义JDK中Clonable和clone方法浅拷贝与深拷贝JDK中数组、集合及Map的处理数组处理集合处理原型模式的注意点和优缺点原型模式的注意点原型模式的优缺点使用序列化处理深拷贝原型模式的介绍和定义原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经原创 2020-08-05 10:18:38 · 105 阅读 · 0 评论 -
设计模式之建造者模式
目录建造者模式定义建造者模式的示例代码建造者省略指挥者建造者模式的优缺点源码中建造者模式的使用JDK中建造者模式的使用建造者模式定义建造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。它关注如何一步一步创建一个的复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。建造者模式定义如下:建造者模式(原创 2020-08-04 18:09:41 · 197 阅读 · 0 评论 -
设计模式之工厂模式
目录1 简单工厂模式1.1 简单工厂的实现1.2 简单工厂的优缺点1.3 简单工厂在JDK中的使用2 工厂方法模式2.1 工厂方法的实现2.2 工厂方法模式的优缺点2.3 工厂方法在JDK中的使用3 抽象工厂模式3.1 抽象工厂的实现3.2 抽象工厂的优缺点3.3 抽象工厂在JDK中的使用工厂模式主要包括简单工厂、工厂方法和抽象工厂三个模式,接下来通过简单工厂–>工厂方法–>抽象工厂三个步骤分别介绍这三个模式的实现、优缺点及在JDK中的使用。1 简单工厂模式1.1 简单工厂的实现首先来看原创 2020-08-04 17:12:04 · 134 阅读 · 0 评论 -
设计模式之单例模式
目录1 单例模式的实现1.1 懒汉模式1.2 饿汉模式1.3 静态内部类1.4 枚举实现单例2 单例模式的一些问题2.1 反射情况下能否保证单例懒汉模式情况下饿汉模式情况下静态内部类模式下枚举模式下2.2 序列化情况下能否保证单例懒汉模式情况下饿汉模式情况下静态内部类模式下枚举模式下非枚举实现如何保证单例3 JDK中单例模式1 单例模式的实现首先来看一下单例模式的四个实现:懒汉模式、饿汉模式、静态内部类和枚举实现单例模式。1.1 懒汉模式首先来看懒汉模式的实现(线程安全),如下:public cl原创 2020-08-04 16:47:57 · 121 阅读 · 0 评论