linkin大话设计模式--常用模式总结 一,常用设计模式定义 Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. Adapter(适配器模式):将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. Bridge(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变化. Builder(建造者模式):将一个复杂对象的构建与它的表示分离,使得同样的构建过…
linkin大话设计模式--建造模式 建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 建造模式的结构: 抽象建造者角色(Builder):给出一个抽象的接口,用来规范产品对象的各个组成成分的建造. 具体建造者角色(ConcreteBuilder): 1.实现抽象建造者所申明的接口,给出一步一步地完成创建产品实例的操作. 2.在建造过程完成后,提供产品的实例. 导演者角色(Director):用来调用具体建造者以…
linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.抽象模板角色: 1.定义了一个或多个抽象操作,以便让子类实现. 2.定义并实现了一个模板方法. 具体模板角色: 1.实现父类所定义的一个或多个抽象方法. 2.每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法的不同实现. 代码如下: //模板…
linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们为了不一直忙于定义子类,就可以使用桥接模式.桥接模式就是把变化部分抽象出来,使变化部分与主类部分分离开来,从而将多个维度的变化彻底分离.最后提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要. 代码如下: <span style="font-size:14px;"&g…
linkin大话设计模式--门面模式 随着系统的不断改进和开发,他们会变得越来越复杂,系统会生成大量的类,这使得程序的流程更加难以理解.门面模式可以为这些类提供一个简易的接口,从而简化访问这些类的复杂化,有时候这种简化可能会降低了程序底层类的灵活性,但除了要求特别苛刻的客户端之外,他通常可以提供所需要的全部功能,当然这些苛刻的用户任然可以直接访问底层的类和方法. 简单来讲,门面模式就是将一组负责的类包装到一个简单的外部的接口中.外部与一个子系统的通信必须通过一个统一的门面对象进行. 门面模式涉及…
linkin大话设计模式--策略模式 Strategy [ˈstrætədʒi]  策略 策略模式用于封装系列的算法,这些算法通常被封装在一个称为Context的类中,客户端程序可以自由的选择任何一种算法,或者让Context来为客户端提供一个最佳的算法.说白了,使用策略模式就是为了支持算法的自由切换. 策略模式是对算法的包装,是吧使用算法的责任和算法本身分割开来,委派给不同的对象管理. 策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类. 一句话来形容:准备一组算法…
linkin大话设计模式--命令模式 首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定. 也就是说,我们写一个方法不仅要求参数可以变化,其中对参数的处理也需要变化,不是写在这个方法的代码逻辑中,是对于这个参数的处理也要传入到这个方法中,那么怎么做呢?命令模式. 不同于js可以在一个方法中参入一个代码块,java中不允许代码块单独存在,因此我们必须把该代码块封装成一个方法,在java中类是一等公民,方法也…
代理模式是一种应用非常广泛的设计模式,当客户端代码需要调用某个对象的时候,客户端并不关心是否可以准确的得到这个对象,他只要一个能够提供该功能的对象而已,此时我们就可以返回该对象的代理.总而言之,客户端代码不能或者不想直接访问被调用对象,服务器这段额外的建立一个代理对象返回给客户端使用,那么这种设计方式就是代理模式. 自从JDK的版本到1.3以后,java语言通过java.lang.reflect库中,提供了三个类来直接支持代理模式.分别是:Proxy,InvocoationHandler和Met…
linkin大话设计模式 开文前先弱弱的问一句:什么是设计模式?我在研究java2ee的时候有研究过,在学js的时候也有看到.设计模式的概念最早源于建筑设计大师<建筑的永恒算法>一书,它表示一个特定的环境,一类问题和一个解决方案之间的关系.对于软件领域,设计模式就是对处于特定的环境下,经常出现的某类软件开发问题的,一种相对成熟的设计方案. 设计模式(Design pattern)是一套被反复使用,多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人…
linkin大话设计模式--抽象工厂 在前面讲到的简单工厂里面虽然实现了我们那个类和其中的依赖的解耦,但是在产生我们需要的依赖的那个工厂里面还是和具体的产品类耦合了  现在要是还想彻底解耦的话怎么办呢?  就是在我们调用依赖的时候,传入一个参数,然后加入自己的判断这样子的话也就解耦了.在高一个层次就是把工厂也设计成接口和实现类,这样子的话调用一个工厂的工厂先产生一个工厂,然后再调用不同的工厂产生一个产品.貌似有点绕,忽忽,至少我现在不是很懂这样子设计的最大的益处. 代码如下: <strong>…