大话设计模式学习
tangyuzhidao
一枚小小码农,爱运动(健身),爱生活,爱音乐,爱交朋友,爱分享。
展开
-
设计模式是什么
最近看了大话设计模式,本篇简略的分享一下自己关于设计模式的思考,后面每种设计模式我都会出一篇博客,详细地介绍每一种设计模式的的定义、类图、应用场景、示例代码以及相近模式之间的联系和区别。首先,我们所谈论的设计模式本质上是一种解决问题的思想,所以它不局限于特定的语言。无论选取哪种语言,无论选取哪种设计模式,目的都是为了去解决一种设计上的问题。其次,我们现在所用的设计模式都是前人的经验总结、经过论...原创 2019-05-20 16:47:02 · 115 阅读 · 1 评论 -
工厂方法模式
定义工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。这样核心工厂类不再负责产品的创建,变成一个抽象工厂角色,仅负责具体工厂子类必须要实现的接口。这样进一步抽象的好处是系统在不修改具体工厂角色的情况下引进新的产品。类图及角色抽象工厂(Creator):工厂方法模式的核心,与应用程序无...原创 2019-06-03 16:44:17 · 224 阅读 · 0 评论 -
抽象工厂方法模式
测试发布原创 2019-06-03 18:21:15 · 207 阅读 · 0 评论 -
原型模式
测试发布原创 2019-06-03 18:21:53 · 200 阅读 · 0 评论 -
模板方法模式
模板方法模式原创 2019-06-15 18:34:19 · 259 阅读 · 0 评论 -
状态模式
状态模式原创 2019-06-15 18:35:41 · 150 阅读 · 0 评论 -
策略模式
策略模式原创 2019-06-15 18:37:07 · 267 阅读 · 0 评论 -
命令模式
命令模式原创 2019-06-15 18:43:21 · 141 阅读 · 0 评论 -
备忘录模式
备忘录模式原创 2019-06-11 18:46:15 · 211 阅读 · 0 评论 -
解释器模式
解释器模式原创 2019-06-15 18:43:59 · 126 阅读 · 0 评论 -
装饰者模式
装饰器模式(Decorator Pattern):动态地给对象添加一些额外的职责,就增加功能来说,它比生成子类更为灵活。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。类图及角色抽象被装饰角色(component):装饰器模式中公共方法的类,在结构图的顶层。具体被装饰角色(concrete component):具体被装饰的类。装饰者角...原创 2019-06-22 12:52:06 · 124 阅读 · 0 评论 -
迭代器模式
迭代器模式(Iterator pattern):提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的内部细节。类图及定义迭代器角色(Iterator):负责定义访问和遍历元素的接口。具体迭代器角色(concrete iterator):实现接口,记录遍历中的当前位置。容器角色(aggregate/container):负责提供创建具体迭代器角色的接口。具体容器角色(co...原创 2019-06-22 13:59:50 · 141 阅读 · 0 评论 -
访问者模式
访问者模式(visitor pattern):封装一些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。通俗的定义:在每个自定义对象中预定义一个Accept(请求访问)方法,这个方法会以对象为参数,调用Visitor(访问者)对象的visit方法来操作这个对象。...原创 2019-06-22 14:50:25 · 267 阅读 · 0 评论 -
生成器模式
生成器模式(Builder Pattern),也称建造者模式,属于构造型模式的一种。定义将一个复杂的对象的构建(builder)和它的表示(director)分离,使得同样的构建过程可以创建不同的表示。核心是给指导者一个生成器,但具体方式不指定。类图及组成角色四种角色(5种包括客户端):产品(Product):具体生产器要构造的复杂对象,它的各个组成部分由ConcreteBuild...原创 2019-06-03 11:31:05 · 3742 阅读 · 0 评论 -
代理模式
代理模式(Proxy Pattern)是结构类、责任类模式的一种,主要包括静态代理,动态代理和Cglib代理。定义代理模式的目的是为其他对象提供一个代理以控制对某个对象的访问(经纪人、秘书)。代理类负责为委托预处理消息,过滤并转发消息,以及进行消息被委托类执行后的后续处理。类图及组成角色抽象角色:通过接口或抽象类声明真实角色实现的业务方法(真实对象和代理类的共同接口)。代理角色:内...原创 2019-06-03 09:49:15 · 163 阅读 · 0 评论 -
中介者模式
中介者模式(Mediator Pattern),又称调停者模式,是行为类模式的一种。定义用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们的交互。类图及组成抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类:从抽象中介者继承而来,实现...原创 2019-05-29 18:26:53 · 245 阅读 · 0 评论 -
接口型模式/接口和抽象类的区别/案例分析
接口模式是什么定义:类Client的实例instanceClient希望使用另一个对象instanceX提供的服务service,但在设计时我们并不能确定对象instanceX属于那个类,这时我们将instanceX提供的服务service抽象为一个接口serviceProvider,然后让对象instanceClient通过持有接口serviceProvider的实例来使用服务。这种通过接口...原创 2019-05-20 18:44:25 · 273 阅读 · 1 评论 -
桥接模式
桥接模式,也叫桥梁模式(Bridge Pattern),是接口型模式的一种。定义将抽象(Abstraction)和实现(Implementation)解耦,使得两者可以独立地变化。结构图从蜡笔到毛笔的例子,解决方案是提供两个父类,它们都包含相应的子类,实现了笔和颜色两个维度自由变化,笔和颜色自由组合。优点代码数量减少。桥接模式将继承关系转换为组合关系,从而降低了系统间的耦合,减...原创 2019-05-24 17:06:31 · 216 阅读 · 0 评论 -
适配器模式
适配器是接口模式的一种。定义将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作的模式(类似于变压器的模式)。要素适配器模式涉及的角色包括:目标、客户、被适配者、适配器(核心)。目标(Target):定义客户端使用的特定接口。客户(Client):使用目标接口,与和目标接口一致的对象合作。被适配者(Adaptee):需要被匹配...原创 2019-05-21 11:21:07 · 145 阅读 · 1 评论 -
责任型模式——责任链模式
责任型模式包括:责任链模式、单例(体)模式、观察者模式、中介者模式、代理模式、享元模式。责任链模式(Chain of Responsibility)定义是一种对象的的行为模式。它使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。发出请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统...原创 2019-05-25 14:05:08 · 425 阅读 · 0 评论 -
单例模式(一)
单例模式(Singleton Pattern),又称单体模式,解决的问题是保证一个类在内存中对象的唯一性(类只有一个实例)。定义将类的责任集中到唯一的单体对象中,确保该类只有一个实例,并且为该类提供一个全局访问点。(难点不在单体模式的实现,在于系统中任何识别单体和保证单体的唯一性)单例模式如何保证对象的唯一性?不允许其他程序用new创建该对象。在该类中创建一个本类实例。对外提供一...原创 2019-05-26 11:36:55 · 197 阅读 · 0 评论 -
外观模式
外观模式,也叫门面模式(Facade Pattern)也是接口型模式的一种。定义要求一个子系统的外部与其内部通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使的子系统更易于使用,从而降低了子系统的复杂性和依赖(当需要的时候,客户端也可以视外观不存在,直接访问子系统底层的接口)。使用为一个比较复杂的子系统提供一个简单的接口。将客户程序和子系统的实现部分分离,提高子系统的...原创 2019-05-23 09:46:37 · 105 阅读 · 0 评论 -
组合模式
组合模式(Composite Pattern)是接口型(结构型)模式的一种。定义将对象组合成树形结构以表示‘部分—整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性(屏蔽了差异,为用户提供了统一的接口)。使用当需求中体现部分—整体结构时,主要针对树形结构(如组织树、商品分类、栏目节目);定义一个通用的公共接口,让组合对象和单个对象都去实现改接口;组合对象:相当于...原创 2019-05-23 12:36:11 · 112 阅读 · 0 评论 -
享元模式
享元模式(Flyweight Pattern)是一个提高程序效率和性能的模式,会大大加快程序的运行速度,是结构类模式的一种。定义享元模式是运用共享技术有效地支持大量细粒度的对象。系统中如果有多个相同的对象,那么只共享一份就可以了,不必去实例化每一个对象(new),这就是享元模式。类图及组成1、FyweightFactory是享元工厂,它用于构造一个池容器,同时提供从池中获得对象的方法...原创 2019-05-31 08:33:15 · 143 阅读 · 0 评论 -
构造型模式
构造型模式主要包括生成器模式、工厂方法模式、抽象工厂模式、原型模式、备忘录模式。构造器定义构造对象并初始化。创建对象时调用的函数,创建对象时都必须对构造函数初始化。一个类中可有多个构造器。构造器的名字和类名相同。构造器可有0个、1个、多个参数。构造器不是函数。构造器和一般函数的区别构造器函数为了创建类的实例执行java代码对象创建时调用进行对象...原创 2019-05-31 08:49:44 · 888 阅读 · 0 评论 -
单例模式(二)
在多线程模式下,惰性初始化会使多个线程同时初始化该单体,造成一个JVM中多个单例类型的实例。如果单例类型的成员变量在运行过程中发生变化,会造成多个单例类型的实例不一致。如何保证线程的安全性?1、添加同步锁public static synchronized Singleton getInstance();虽然引入了同步代码,但是不会影响系统性能(这段代码只在最开始的时候执行一次)2. ...原创 2019-05-28 18:38:22 · 192 阅读 · 0 评论 -
观察者模式
观察者模式(Observer Pattern)属于行为模式的一种,又叫发布订阅模式。定义定义对象间一种一对多的依赖关系,使得每一个对象改变状态,所有依赖于它的对象都会得到通知并被自动更新。组成部分及类图抽象目标角色(Subject)、抽象观察者角色(Observer)、具体目标角色(Concrete Subject)、具体观察者角色(Concrete Observer)观察者模式...原创 2019-05-28 22:33:38 · 158 阅读 · 0 评论