软件设计模式
文章平均质量分 62
指尖飞码
关注大数据开发、编程、算法
展开
-
软件设计模式——访问者模式(Visitor)
定义与结构访问者模式,顾名思义使用了这个模式后就可以在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。《设计模式》一书对于访问者模式给出的定义为:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必须条件,而且这个结构对象必须存在遍历自身各个对象的方法。这便类似于java 中原创 2016-04-27 10:23:14 · 743 阅读 · 0 评论 -
软件设计模式——解释器模式(Interpreter)
一、 引子 解释模式描述了如何构 一个简单的语言解释器,主要应用在 使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。 二、定义与结构 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。 让我们来看看神秘的解释器模式是由什么来组成的吧。抽象解释器:声明一个所有具体表原创 2016-05-01 20:52:15 · 684 阅读 · 0 评论 -
软件设计模式——责任链模式(Chain Of Responsibility)
引言责任链模式就是“推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我管呢!定义与结构从名字上大概也能猜出这个模式的大概模样——系统中将会存在多个有类似处理能力的对象。当一个请求触发后,请求将在这些对象组成的链条中传递,直到找到最合适的“责任”对象,并进行处理。《设计模式》中给它的定义如下:使多个对象都有机会处理请求,从而避免请求的发送者和接转载 2016-05-01 21:23:59 · 580 阅读 · 0 评论 -
软件设计模式——单例模式(Singleton)
一、引入单例模式是设计模式中使用很频繁的一种模式,在各种开源框架、应用系统中多有应用。二、概念单例模式又叫做单态模式或者单件模式。即保证一个类仅有 一个实例,并提供一个访问它的全局访问点。单例模式中的“单例”通常用来代表那些本质上具有唯一性的系统组件(或者叫做资源)。比如文件系统、资源管理器等等。(1)单例模式的作用与实现方法作用:控制特定的类只产生一个对象,当然也允许在一定原创 2016-04-14 10:11:22 · 1199 阅读 · 0 评论 -
软件设计模式——抽象工厂模式(Abstract Factory)
先来认识下什么是产品族: 位于不同产品等级结构中,功能相关联的产品组成的家族。还是让我们用一个例子来形象 说 一下吧。 图中的 BmwCar 和 BenzCar 就是两个产品树(产品层次结构);而BenzSportsCar 和 BmwSportsCar 就是一个产品族。他们都可以放到跑车家族中,因此功能有所关联 。同理 BmwBussinessCar 和 BenzSportsCar 也是一原创 2016-04-14 01:12:20 · 1307 阅读 · 0 评论 -
软件设计模式——工厂方法模式(Factory Method)
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。通俗的来说就是把简单工厂模式里面的分支语句给去掉,将每个具体产品的实例化过程放到相应的产品中去。相应的角色如下:(1)抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。 (2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。原创 2016-04-13 22:51:57 · 1869 阅读 · 1 评论 -
软件设计模式——简单工厂模式(Simple Factory)
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。一 、设计模式分为三种类型: 1.创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原原创 2016-04-13 21:40:33 · 1888 阅读 · 0 评论 -
软件设计模式——迭代器模式(Iterator Pattern)
用途迭代器模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。实现我们将创建一个叙述导航方法的 Iterator 接口和一个返回迭代器的 Container 接口。实现了 Container 接口的实体类将负责实现 Iterator 接口。 IteratorPatternDemo我们的演示类使用实体类 NamesRepository 来打印 NamesRepository 中存储为集原创 2016-05-04 17:17:41 · 806 阅读 · 0 评论 -
软件设计模式——状态模式(State Pattern)
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。实现我们将创建一个 State 接口和实现了 State 接口的实体状态类。Context 是一个带有某个状态的类。 StaePatternDemo,我们的演示类使用 Context 和状态对象原创 2016-05-04 17:26:59 · 1102 阅读 · 0 评论 -
软件设计模式——中介者模式(Mediator)
定义与结构中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。GOF 给调停者模式下的定义是:用一个中介类对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者转载 2016-04-20 08:37:59 · 888 阅读 · 0 评论 -
软件设计模式——门面模式(Facade)
定义: 面模式(facade)又称为外观模式,它是为了解决类与类之间的依赖关系的,像 spring 一样,可以将类和类之间的关系配 置到配置文件中,而外观模式就是将他们的关系放在一个 Facade 类中,降低了类类之间的 耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例) 门面模式的组成: 1)门面角色( facade ):这是门面模式的核心。它被客户角色调用,因此它熟原创 2016-04-22 00:06:24 · 1263 阅读 · 1 评论 -
软件设计模式——观察者模式(Observer)
介绍当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。应用实例1、拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价。 2、西游记里面悟空请求菩萨降服红孩儿,菩萨洒了一地水招来一个老乌龟,这个乌龟就是观察者,他观察菩萨洒水这个动作。 实现观察者模式使用三个类 Subject、Obs原创 2016-04-19 18:22:56 · 1590 阅读 · 0 评论 -
软件设计模式——原型模式(Prototype)
定义与结构原型模式属于对象创建模式,我们从名字即可看出该原型模式的思想就是将一个对象作为原型,其进行复制、克隆产生和类似的新对象。GOF给它的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Java 中提供了clone()方法,使用Object的clone()方法来实现对象的克隆,所以Prototype 模式实现变得简单许多。既然用到clone()方法,不可避免的我们就会涉及转载 2016-04-19 16:43:30 · 1832 阅读 · 0 评论 -
软件设计模式——模版方法模式(Template Pattern)
定义在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使的子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。将主要的方法定义为final,防止子类修改算法骨架,将子类必须实现的方法定义为abstract。而普通的方法(无final或abstract修饰)则称之为钩子。钩子作用1)作为可选内容,子类可以重写或者置之不理 2)让子类有机会对模板方法中即将发生的或者已经发生的步原创 2016-04-26 00:06:56 · 607 阅读 · 0 评论 -
软件设计模式——你真的会写单例模式吗?
单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。饿汉法顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建。代码如下:public class Singleton { private static Singleton = new Sing转载 2016-04-15 00:31:40 · 610 阅读 · 1 评论 -
软件设计模式——装饰(Decorator)模式你真的懂吗?
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。装饰模式的类图如下: 在装饰模式中的角色有: (1)抽象构件(Component)角色:给出一个原创 2016-04-17 15:13:19 · 611 阅读 · 0 评论 -
什么是软件设计模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。一 、设计模式分为三种类型: 1.创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原原创 2016-04-17 15:38:31 · 4796 阅读 · 0 评论 -
软件设计模式:代理(Proxy)模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问.网上的很多关于代理模式的例子都举的不错如: 1、Windows 里面的快捷方式。 2、猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象 出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。 3、买火车票不一定在火车站买,也可以去代售点。 4、一张支票原创 2016-04-17 16:38:47 · 1116 阅读 · 0 评论 -
软件设计模式——适配器(Adapter)模式
适配器模式(Adapter Pattern):是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。该类负责加入独立的或不兼容的接口功能。将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以原创 2016-04-17 17:48:53 · 1748 阅读 · 0 评论 -
软件设计模式——桥接模式(Bridge)
定义与结构GOF 在《设计模式》中给桥接模式的定义为:将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的抽象部分和实现部分不是我们通常认为的父类与子类、接口与实现类的关系,而是组合关系。也就是说,实现部分是被抽象部分调用,以用来完成(实现)抽象部分的功能。而桥接的用意就是:将抽象化和实现化解耦,使得二者独立变化。像我们常用的 JDBC桥 DriverManager一样, JDBC进行连接数转载 2016-04-18 09:57:44 · 1425 阅读 · 0 评论 -
软件设计模式——命令模式(Command Pattern)
定义与结构命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。《设计模式》中命令模式的定义为:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。命令模式很好理解,举个例子,司令转载 2016-04-18 08:55:17 · 972 阅读 · 0 评论 -
软件设计模式——策略模式(Strategy pattern)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式主要分为以下三个角色: 1. 环境角色(Context):持有一个策略类引用 2. 抽象策略(Strategy):定义了多个具体策略的公共接口,具体策略类中各种不同的算法以不同的方式实现这个接口;Context使用这些接口调用不同实现的算法。一般的原创 2016-04-17 08:24:19 · 1376 阅读 · 0 评论 -
软件设计模式:享元模式(Flyweight)
转载自:http://blog.csdn.net/wangyanguiyiyang定义与分类享元模式(Flyweight Pattern) 主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。GOF中对享元模式的定义为:采用一个共享类来避免大量拥有相同内容的“小类”的开销。这种开销中最常见、直观的影响就是增加转载 2016-04-19 16:28:04 · 550 阅读 · 0 评论 -
软件设计模式——建造者模式(Builder)
定义与结构GOF 给建造模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这句话说得很抽象,不好理解,其实它的意思可以理解为:将构造复杂对象的过程和组成对象的部件解耦。就像攒电脑一样,不管什么品牌的配件,只要兼容就可以装上;同样,一样的配件,可以有好多组装的方式。这是对降低耦合、提高可复用性精神的一种贯彻。当要生成的产品有复杂的内部结构——比如由多个对象组原创 2016-04-24 16:51:15 · 843 阅读 · 0 评论