![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
没有不忧伤的故事
这个作者很懒,什么都没留下…
展开
-
设计模式01-入门介绍篇
设计模式简介设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式由来由GOF(四人帮)出版的一本名为《设计模式 - 可复用的面向对象软件元素》的书提出的设计模式的概念。该书基于以下的面向对象设计原则对接口编程而不是对...原创 2018-05-09 00:40:51 · 154 阅读 · 0 评论 -
RMI技术和远程代理
远程代理概念定义远程代理就是”远程对象的本地代表”。”远程对象”就是一个活在不同JAVA虚拟机(JVM)堆里,即在不同的地址空间中代表同一对象。“”本地代表“就是可以像在本地方法一样调用的对象,其行为转发到远程对象。远程代理就是为了让远程调用看起来跟本地调用对象一样,毫无瑕疵。结构这里有四个角色。客户对象,客户代理对象(客户辅助对象),服务辅助对象,服务对象 1.客户对象...原创 2018-07-15 23:42:37 · 875 阅读 · 0 评论 -
设计模式16-代理模式
概念 定义为其他对象提供一种代理以控制对这个对象的访问。本质:“控制对象访问” 结构该模式有三种角色。代理对象,目标接口,具体的目标对象。代理对象:1.代理对象需要和具体的目标对象一样实现目标接口 2.代理对象要持有具体目标对象的引用,还要提供给用户传入具体目标对象的入口 3.代理对象的方法,可以控制对具体目标的访问 目标接口:定义代理和具体对象的接口,这样代...原创 2018-07-13 22:39:05 · 154 阅读 · 0 评论 -
设计模式15-模板方法
概念定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的接口即可重新定义该算法的某些特定步骤。本质:“固定算法骨架”结构与说明模板模式有两个角色,抽象类和实体类。 抽象类。用来定义算法骨架和原语操作。在这个类里面,可以提供算法的通用实现 实体类。用来实现算法骨架中的某些步骤,完成跟特定子类相关的功能 原语操作就是抽象的操作,必...原创 2018-07-12 21:14:01 · 155 阅读 · 0 评论 -
设计模式17-装饰模式
概念定义动态给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活结构 该模式有四个角色,Component(组件父类),ConcreteComponent(组件子类),Decorator(装饰类父类),ConcreteDecorator(装饰类子类)该模式具体可以分为两类,一类组件(被装饰的对象),一类装饰器。 组件父类:可以添加职责,装饰器父类和组...原创 2018-07-24 01:21:53 · 227 阅读 · 0 评论 -
设计模式12-中介者模式
概念定义中介者模式,就是用一个中介对象来封装一系列的对象交互。中介者使得相关对象之间复杂的沟通和控制得到缓解,不需要显式的相互引用,从而使他们耦合松散。核心:封装对象间的交互结构中介者模式有两个角色,“同事类”和“中介者”。 同事类是平行关系,一般是实现自己的业务,当需要与其他同事进行通信的时候,就通知该同事持有的中介者,中介者再负责交互,所以每个同事类都应该知道中介者 中...原创 2018-07-03 22:53:16 · 139 阅读 · 0 评论 -
设计模式11-观察者模式
概念定义:观察者模式定义了对象间的一种一对多的依赖关系。当“一”的对象状态发生变化时,有依赖于它的所有对象都得到通知并且自动更新,其本质是触发联动结构:观察者模式主要有两个角色,”主题”(Subject)和”观察者”()。如果把这种一对多的关系比作报社和订报者,那么“报社”就是主题,订报者就是”观察者”,所以观察者模式也叫“发布”-“订阅”模式关键说明:1.事实上,...原创 2018-07-02 21:54:33 · 207 阅读 · 0 评论 -
设计模式14-策略模式
概念定义策略模式定义一系列算法,把他们一个个封装起来,并使他们可互相替换。本模式使算法可以独立于使用它的客户而变化。与状态模式有异曲同工之妙。其本质是”分离算法,选择实现”结构 与状态模式一样。策略模式有三个角色,策略接口,具体策略实现类,上下文 策略接口(Strategy),用来约束具体的策略算法。上下文使用这个接口来调用具体的策略实现定义算法 实体策略类(Concre...原创 2018-07-08 17:34:41 · 168 阅读 · 0 评论 -
设计模式13-状态模式
状态模式和策略模式是孪生兄弟。他们都是为了解决产生多重if,else这种判断下形成的设计模式。为了让系统充满弹性和可维护性。策略模式是围绕互换的算法来创建业务,解决这个问题。而状态模式跟策略模式更不一样了,他是通过改变对象内部的状态来帮助对象控制自己的行为。概念定义状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。结构状态模式有三个角色。“状态接口”...原创 2018-07-08 15:21:01 · 176 阅读 · 0 评论 -
设计模式10-迭代器模式
介绍迭代器模式(Iterator Pattern)提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。关键代码:定义接口:hasNext, next。**应用实例:**JAVA 中的 iterator。优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合...原创 2018-05-29 22:45:34 · 129 阅读 · 0 评论 -
设计模式06-原型模式
介绍遇到需要创建重复的对象,且创建这个对象的过程很复杂且昂贵,那么原型模式适用于这种情况。原型模式实际上是复制当前现有的对象来创建新的实例,即克隆,java的clone()方法。比如数据库连接对象,在被创建后,我们可以缓存该对象,下次请求返回它的克隆。意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。何时使用: 1、当一个系统应该独立于它的产品创建,...原创 2018-05-24 00:51:30 · 116 阅读 · 0 评论 -
设计模式-09外观模式
介绍外观模式就是简化接口,隐藏系统的复杂性麻将客户从组建的子系统中解耦,提供一个简单的接口供用户调用。简单干净的外观,就是外观模式的来意。意图:简化接口。为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个”接待员”即可。 2、定义系统的入口。关键代码...原创 2018-05-27 22:43:40 · 116 阅读 · 0 评论 -
设计模式08-桥接模式
介绍为了让抽象化和实现化解耦,两者可以独立扩展,对于抽象类的改变,不会影响到使用。所以出现了桥接,提供了抽象化和实现化的桥接结构,实现解耦...原创 2018-05-27 19:51:42 · 110 阅读 · 0 评论 -
设计模式05-建造者模式
介绍多个简单对象通过如同积木一样一步一步拼装成一个复杂对象。这个复杂对象指的就是Builder类,该类是独立于简单对象这个体系的。意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:面临“一个复杂对象”的创建工作由其他各个部分的子对象组成,而这些子对象的的组合方式经常变化。何时使用:一些基本部件不会变,而其组合经常变化的时候如何解决:将变与...原创 2018-05-22 23:59:11 · 124 阅读 · 0 评论 -
设计模式07-适配器模式
介绍适配器模式是将一个类的接口,转换成客户期望的另一个接口。是两个不兼容的接口之间的桥梁,他是一个中间人的身份。最经典的就是美国和中国的插头和插座,为了使美国的插头能插在中国的插座,那么中间就有一个交流电适配器。意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决:环境不同兼容问题何时使用: 1、...原创 2018-05-26 15:40:12 · 139 阅读 · 0 评论 -
设计模式03-工厂模式
介绍工厂模式的出现,在于我们创建对象时,希望不要对客户端暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。何时使用:明确地计划在不同条件下创建不同实例对象关键步骤:创建过程在工厂类中执行,通过一个方法返回给使用者。优点:一个调用者想创建一个对象,只要知道其名称就可以了。 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。屏蔽产品的具体实现,调用者只关心产品...原创 2018-05-21 21:53:38 · 129 阅读 · 0 评论 -
设计模式04-抽象工厂模式
介绍抽象工厂模式就是一个超级工厂,创建者其他工厂。在这个模式中,接口是负责创建一个相关的工厂类,不需要显示指定它的类何时使用:当产品有多于一个的产品族,需要通过不同的工厂来生产不同的产品族。关键部分:定义一个抽象类或接口为超级工厂,里面聚合了其他产品族的接口方法优点:一个产品族的多个对象都被设计成一起工作,能保证客户端使用的是同一个产品族的对象缺点:产品族扩展非常困难,要增...原创 2018-05-21 21:48:57 · 119 阅读 · 0 评论 -
设计模式02-单例模式
介绍单例模式可以说是最简单的创建型模式了,面试的时候大部分会以此作为面试题。但相对来说,它挺复杂的,针对于不同情形,有不一样的实现方式。如经典的线程不安全懒汉式,线程安全懒汉式,饿汉式,双检锁/双重校验锁,静态内部类,枚举定义在某些场合,出于节约资源等原因,需要只保证一个类只有一个实例化对象。如线程池,数据库连接,缓存,日志对象,打印机等等优点节省资源,减少内存开销,...原创 2018-05-17 23:44:06 · 105 阅读 · 0 评论 -
设计模式18-命令模式
概念定义将一个请求封装为一个对象,从而使你可用不同请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。本质“封装请求”结构 该模式有五个角色。“命令接口”,“命令接口实现类”,“接收者”,“要求执行者”,“装配者”Command:定义命令接口 ConcreteCommand:命令接口实现对象,持有接收者,调用接收者的功能来完成命令操作 Receive...原创 2018-07-26 21:14:27 · 324 阅读 · 0 评论