设计模式
二两酒馆
测试攻城狮一枚
展开
-
设计模式----适配器模式
适配器模式(Adapter Pattern)将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,是作为两个不兼容的接口之间的桥梁。目的是消除由于接口不匹配所造成的类的兼容性问题。更细的的分类,主要分为三类类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可...原创 2018-07-30 16:20:33 · 4916 阅读 · 0 评论 -
设计模式----迭代模式
迭代子模式提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。顺序访问聚集中的对象,一般来说,集合中非常常见。一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。 ● Iterator抽象迭代器 抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()是否已经访问到...原创 2018-07-31 14:53:32 · 5274 阅读 · 0 评论 -
设计模式----抽象工厂
抽象工厂提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂又称为其他工厂的工厂,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。实现一个基础接口定义了功能,子类实现该接口;然后定义一个工厂接口,具体工厂实现工厂接口; 新增基础接口的实现类,只需要同时新增一个工厂类,调用端就可以轻松调用新产品的代码还是以工厂模式中的容器作为背景,之前的无原创 2018-07-31 14:08:17 · 4812 阅读 · 0 评论 -
设计模式----组合模式
将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次涉及角色:omponent抽象构件角色 这是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。Leaf叶子构件 ...原创 2018-07-31 14:02:33 · 4622 阅读 · 0 评论 -
设计模式----单例模式
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例对象能保证在一个JVM中,该对象只有一个实例存在。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。好处:某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。省去了new操作符,降低了系统内存的使用频...原创 2018-07-31 13:48:10 · 4585 阅读 · 0 评论 -
设计模式介绍
我的设计模式入门是Head First pattern,可以说是比较好的入门书籍,教程上讲解了常用的设计模式,并不全面。作为入门足够,通俗易懂。设计模式定义(参考:百科资料)设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正...原创 2018-07-31 13:41:14 · 4748 阅读 · 0 评论 -
设计模式----工厂模式
简介定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。是 Java 中最常用的设计模式之一。使用场景出现了大量的对象需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建对象。如何实现让其子类实现共同的接口,返回一个接口类型的对象代码...原创 2018-07-31 13:38:32 · 4579 阅读 · 0 评论 -
设计模式----模板方法模式
一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法(将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑,不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现定义一个类),继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。是基于继承的代码复用的基本技术。模板模式的关键是:子类可以置换掉父类的可...原创 2018-07-31 11:44:33 · 4767 阅读 · 0 评论 -
设计模式----创建者模式Builder
创建者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。 与工厂模式相比,创建者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——指挥类(负责流程控制)。 工厂模式:是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;每一次工厂对象被原创 2018-07-31 11:36:52 · 4837 阅读 · 2 评论 -
设计模式----命令模式
命令模式把一个请求或者操作封装到一个对象中,目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开。主要角色客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。命令(Command)角色:声明了一个给所有具体命令类的抽象接口。具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;负责调用接收者的相应操...原创 2018-07-30 17:21:50 · 4771 阅读 · 0 评论 -
设计模式----代理模式
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。分类按照代理的创建时期划分:静态代理和动态代理静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。其中动态代理根据实现方式有两种一种是JDK内置Proxy实现,一种是cglib实现静态代理...原创 2018-07-30 17:18:38 · 4737 阅读 · 0 评论 -
设计模式----访问者模式
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法...原创 2018-07-30 17:17:51 · 5257 阅读 · 0 评论 -
设计模式----观察者模式
当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系。又叫发布-订阅(Publish/Subscribe)模式抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observa...原创 2018-07-30 17:15:08 · 4638 阅读 · 0 评论 -
设计模式----外观模式
门面模式也成为外观模式,它隐藏系统的复杂性,为子系统中的一组接口提供一个一致的途径,门面模式定义了一个高层接口,使得这一子系统更加容易使用。是为了解决类与类之间的依赖关系的,将类与类的关系放在一个类中,降低了类类之间的耦合度。代码示例如:买台式机电脑,如果没有电脑整机供应商,我们需要分别买处理器(Cpu)、主板(Board)、硬盘(Disk)、机箱(ComputerCase)、电源(Pow...原创 2018-07-30 16:58:02 · 4883 阅读 · 2 评论 -
设计模式----责任链模式
某个请求需要多个对象进行处理,从而避免请求的发送者和接收之间的耦合关系。将这些对象连成一条链子,并沿着这条链子传递该请求,直到有对象处理它为止。主要角色:抽象处理者(Handler)角色:定义出一个处理请求的接口。通常由一个Java抽象类或者Java接口实现。具体处理者(ConcreteHandler)角色:具体处理者接受到请求后,可以选择将该请求处理掉,或者将请求传给下一个处理者...原创 2018-07-30 16:51:41 · 4687 阅读 · 0 评论 -
设计模式----装饰器模式
装饰模式以对调用端透明的方式动态扩展对象的功能,是继承关系的一个替代方案。调用端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展 缺点:产生过多相似的对象,不易排错!以服务生为例,新入行的服务生和老练的服务生,新入行的服务生会按照培训流程等进行接待客人,但老练的服务生会察言观色,可能会根据不同的人加入不同的沟通技巧。pack...原创 2018-07-30 16:50:09 · 4583 阅读 · 0 评论 -
设计模式----策略模式
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。● Context封装角色 它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。 ● Strategy抽象策略角色 策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性。各位看官可能要问了,类图中的AlgorithmInterface是什么意思,嘿嘿,algorit...原创 2018-07-30 16:49:15 · 4771 阅读 · 0 评论 -
设计模式----桥接模式
将抽象和实现解耦,使得两者可以独立地变化,从而可以保持各部分的独立性以及应对他们的功能扩展。涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响涉及角色:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义...原创 2018-07-30 16:47:25 · 4949 阅读 · 2 评论 -
设计模式----状态模式
当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。● State——抽象状态角色 接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换。 ● ConcreteState——具体状态角色 每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理,通俗地说,就是本状态下要做的事情,以及本状态如何过渡到其他状态。 ● Context——环境角色 定义客户...原创 2018-07-31 15:19:45 · 4706 阅读 · 0 评论