
设计模式
fk543
fk5431.com
展开
-
设计模式——单例模式
设计模式:就是对问题有效解决的一种方式,体现的其实就是一种思想。在编程中的设计模式和语言无关,只要知道这种问题的解决思路就可以OK了。(一共二十三设计模式)单列设计模式解决的问题就是要保证一个类在内存中的对象唯一性情景一 如果必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性保证对象的唯一性 就需要保证1、 不允许其他程序用new创建该类对原创 2015-09-09 16:56:47 · 791 阅读 · 0 评论 -
代理模式
代理模式介绍代理模式为其他对象提供一种代理以控制对这个对象的访问。(结构型模式) 代理模式提供三种角色: - 抽象角色:声明真实对象和代理对象的共同接口。 - 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 - 真实角色原创 2017-08-04 17:20:09 · 667 阅读 · 0 评论 -
迭代器模式
迭代器模式介绍迭代器模式:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。(行为型模式) 迭代器模式是应该是java中使用的最多的一种设计模式,迭代器模式如下: 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,原创 2017-08-17 22:10:59 · 727 阅读 · 0 评论 -
享元模式
享元模式介绍享元模式使用共享来避免大量拥有相同内容对象的开销,避免内存的损耗。享元对象能做到共享的关键是区分内蕴状态和外蕴状态。 内蕴状态是存储在享元对象内部的,不会随环境的改变而有所不同(内蕴状态可以共享)。 外蕴状态是随环境的改变而改变的,不可以共享,外蕴状态不可以影响享元对象的内蕴状态,它们是相互独立的。优点大幅度地降低内存中对象的数量缺点使得系统更加复杂享元模式将享元对象的状态外原创 2017-08-02 17:54:14 · 385 阅读 · 0 评论 -
外观模式
外观模式介绍为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 就像下图,facade把众多子系统中通过一个接口统一起来: 适用场景设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,原创 2017-08-02 10:11:00 · 444 阅读 · 0 评论 -
装饰器模式
装饰器模式介绍装饰器模式允许向一个现有的对象添加新功能,同时又不改变其结构。(结构型模式) 这种形式在没有原类文件和使用继承的情况下动态的扩展了一个对象的功能。类的继承是在编译是时候增加的功能,而装饰器模式在运行时增加的功能装饰器模式构成Component : 组件对象接口,可以给这些对象动态添加职责ConcreteComponent : 具体的组件对象,实现了组件接口。这个对象通常是被装饰器修饰原创 2017-08-01 16:20:32 · 545 阅读 · 0 评论 -
组合模式
组合模式介绍组合模式将对象组合成树形结构表示“部分-整体”的层次结构,组合模式使用户对单个对象和组合对象的使用具有一致性。(结构型) 就像文件系统一样,文件由目录和文件组成,每个目录都可以装载目录,目录的内容既可以是文件,也可以是目录。计算机的文件系统就是以递归结构来组织的,这种情景就适用于组合模式。使用场景和涉及的角色适用性你想表示对象的部分-整体层次结构你希望用户忽略组合对象与单个对象的不原创 2017-07-30 19:32:37 · 444 阅读 · 0 评论 -
过滤器模式
过滤器模式介绍过滤器模式允许开发者用不同的标准过滤一组对象。(结构型模式) 使用过滤器模式可以很方便的进行扩展,单独一个过滤器的执行是独立的,不依赖其他过滤器。DEMO例如,一个Person类有姓名、性别、婚姻状况属性 :package factory.pattern.filter;/** * Created by fk5431 on 7/27/17. */public class Pers原创 2017-07-27 12:09:28 · 504 阅读 · 1 评论 -
桥接模式
桥接模式介绍桥接适用于把抽象化与实现化解耦,使得二者可以独立变化。(结构型模式) 用来解决两个或者多个纬度的变化,使用桥接模式可以降低复杂度。将两个角色之间的继承关系改为聚合关系,这样两者可以独立的变化。例子就像大话设计模式中讲的一样,每个手机都有其对应的功能(软件),而这些功能在不同手机上可能不兼容,那么列出一个手机品牌和其对应的部分功能的结构图如下: 但是这样的话,不管要增加一个手机品牌原创 2017-07-26 18:09:35 · 453 阅读 · 0 评论 -
适配器模式
适配器模式介绍适配器模式讲一个类的接口转换为被期望用到的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作.(结构型模式)适配器模式中的角色一般适配器模式中有以下三个角色:目标接口(Target) : 客户期待的接口.需要适配的类(Adaptee) : 需要适配的类.适配器(Adapter) : 包装一个需要适配的对象,吧原接口转换为目标接口.优点通过适配器,客户端调用原创 2017-07-25 15:25:08 · 348 阅读 · 0 评论 -
原型模式
原型模式介绍用原型实例制定创建对象的种类,并通过拷贝这些原型创建新的对象。(创建型模式) 原型模式比较简单的一种模式,实现一个接口就完成了原型模式。一般原型模式很少单独出现,会与其他模式混用。适用场景使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。 使用原型模式的另一个原创 2017-07-25 10:05:20 · 409 阅读 · 0 评论 -
建造者模式
建造者模式定义将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。(创建型模式)使用场景1 创建一些复杂的对象时,这些对象的内部组成间的构建顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。 2 要创建的复杂对象的算法,独立于该对象的组成部分,也独立与组成部分的装配方法时。 优点:使用建造者模式可以让客户端不知道产品内部的组成细节.具体的原创 2017-07-24 10:24:29 · 439 阅读 · 0 评论 -
设计模式--单例模式
单例模式定义一个类有且仅有一个实例,并且自行实例化向整个系统提供。(创建型模式) 设计模式中比较简单的几种之一,单例模式就是让一个类在系统运行过程中只会产生唯一的一个实例,单例模式主要:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。使用场景需要频繁实例化然后销毁的对象。创建对象时耗时过多或者耗资源过多,但又经常用到的对象。有状态的工具类原创 2017-06-19 22:09:48 · 337 阅读 · 0 评论 -
设计模式--抽象工厂模式
抽象工厂模式介绍为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。(创建型模式)和工厂模式区别工厂模式提供一个产品的结构,而抽象工厂模式提供多个产品的结构,可以组成一个产品族。 QQ换皮肤可以使用抽象工厂模式优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。 缺点:扩展非常麻烦,需要修改很多代码。DEMO可以在前一个例子上给图原创 2017-06-19 12:14:47 · 355 阅读 · 0 评论 -
设计模式——工厂模式
工厂模式介绍定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。(创建型模式)使用场景例如orm框架,在选择数据库的时候只需要替换方言和驱动,不需要对已经实现的具体细节进行改动。优点:使用工厂模式可以屏蔽具体实现,只需要关心接口的调用;在增加一个产品的时候,只需要在工厂类里扩展一个产品就可以。缺点:每增加产品就必须增加具体实现类和实现工厂,增加了系统复原创 2017-06-18 10:50:43 · 437 阅读 · 0 评论 -
解释器模式
解释器模式介绍解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。(行为型模式)解释器模式uml图一般如下:AbstractExpression 抽象解释器 具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonterminalExpression完成。TerminalExpression终原创 2017-08-16 23:26:04 · 911 阅读 · 0 评论 -
命令模式
命令模式介绍 在软件系统中,行为请求者与行为实现者通常是一种紧耦合关系,但是有时候,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合关系就不大合适。将一个请求封装成一个对象,从而是你可用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。 命令模式就是对命令进行封装,把发出命令和执行命令分开,请求方并不知道命令是怎么被接受,也不知道命令是否执原创 2017-08-09 10:58:54 · 449 阅读 · 0 评论 -
设计模式
设计模式设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。其实就是经过前人反复使用总结使用得出在不同场景有对应的解决方案。 使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计原则开闭原则模块应对扩展开放,对修改关闭,也就是在对程序进行拓展的时候,不要去修改原来的代码,实现热插拔的效果。这样可以使得程序扩展性更好,更易于维护。(主要是使用接口和抽象类实现,原创 2017-06-17 22:07:50 · 676 阅读 · 0 评论 -
责任链模式
责任链模式介绍在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求会在这个链上传递,直到链上某一个对象可以处理这个请求。(行为型模式)结构图责任链模式的结构像下面这样:抽象处理者角色(handler):定义一个处理请求的接口,还可以定义一个后继连接(可选)。具体处理者角色(ConcreteHandler):具体处理者接到请求后,如果可以处理就处理请求,如果不能处理就把请求原创 2017-08-06 23:23:51 · 377 阅读 · 0 评论