
设计模式
文章平均质量分 96
鼠晓
未来的路是黑的,我不知道怎么走,我需要做的就是先走着。 https://smallzheng.blog.youkuaiyun.com https://github.com/mousezheng
展开
-
设计模式 -- 建造者模式和工厂(类)模式的区别
之前说过, 简单工厂模式 工厂方法模式 抽象工厂模式 建造者模式 以及 简单工厂模式、工厂方法模式和抽象工厂模式区别与联系建造者模式和工厂(类)模式很像,但是又不太一样建造者模式:使用时需要传入参数,即以构建为目的。 例如,通过配置文件进行构建一个对象,或者通过某些参数构建一个对象。 三种工厂模式:以创建为目的,通常使用get..()即可获取某种对象(部分需要传入参数,传入的参数原创 2017-08-04 21:09:39 · 1863 阅读 · 0 评论 -
【设计模式】装饰模式
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。一。简解装饰模式从两方面理解,透明和扩展,主要是通过继承的方式用子类实现对父类功能的扩展。很好的实现了向下兼容的效果,开闭原则,不改变原类的情况下扩展。二。用途在系统升级是很常用,系统中很容易出现对此类的使用,如果直接扩展的话很容易出现问题。同时为了满足开闭原则,使用子类对其功能进行扩展,两原创 2017-03-30 22:27:23 · 821 阅读 · 0 评论 -
【设计模式】亨元模式
Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。一。简解享元模式顾名思义,共享单元,通过一种共享池的方式来减少内存的开销。二。用途享元模式最大的好处就是节省内存,举个例子,一个由26个字母组成的文件。 对每个字母(大小写不区分)声明一个对象需要原创 2017-03-30 21:46:30 · 1107 阅读 · 1 评论 -
【设计模式】代理模式
代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。一。简解代理模式顾名思义,通过第三方的代替完成某些功能。火车站代售处都听说过吧,它可以买票但是退票是不太好办的,也就是第三方可以有被代理对象的部分或者全部功能,也可以自己增加功能。 别小看这个代理模式哦,不信你看下面用途二。用途有句话怎么说:“菜鸟拿倚天剑当菜刀使,高手飞叶也伤人” 代理模式十分强大,原创 2017-03-30 21:19:32 · 676 阅读 · 0 评论 -
【设计模式】组合模式
将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。一。简解组合模式又名合成模式,两个是一个概念,类似于一种合并同类项的感觉(X+5X+2X^2 = 6X+2X^2),实现了使用整体和使用局部之间的解耦,有点抽象+_+。没关系看例子☟。二。用途小明回家告诉:妈妈我要买衣服(衣服是抽象概念整体概念) 妈妈问:你要买什么衣服(具体点) 小明:我要原创 2017-03-26 15:59:42 · 820 阅读 · 0 评论 -
【设计模式】适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。一。简解适配器模式很好理解,两个字说就是适配(转换),实现使用和被使用之间的解耦。二。用途 举个例子,A需要使用B,C,D,但是B,C,D都有自己的规范,难道要在A中,将这些规范逐个转换成A能接受的规范。那再来个E,岂不还得再改,删除个B也得改好多。这时候适配器就能很好的解决。原创 2017-03-26 14:19:45 · 837 阅读 · 0 评论 -
【设计模式】原型模式
原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。 一。简解原型模式很好理解,就是对自身进行拷贝,原形就是自身,原型模式可以理解为对自身的一种备份吧。java可以实现多接口,运行时拷贝也可以做许多变换,这里面还是很有学问的 ∩_∩。二。用途原型模式用途,举个例子,改一个算法,提起是不是要备份一下,原创 2017-03-26 14:00:41 · 637 阅读 · 0 评论 -
【设计模式】建造者模式
建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 一。简解建造者模式,相当于是对工厂生产产品的一种装配,由于这种装配可能随时改变,所以需要抽取出来,实现产品局部与整体的解耦(当然话又说回来,单个孤立产品还需要建造者?那就是多此一举。)。着重理解装配的含义,对原创 2017-03-26 13:18:26 · 8265 阅读 · 1 评论 -
【设计模式】简单工厂模式、工厂方法模式和抽象工厂模式区别与联系
简单工厂模式、工厂方法模式和抽象工厂模式都是设计模式中创建型的经典方法,各有千秋,各有用物之地啊。简单工厂,主要用生产对象不能抽象为一个类,或者是面向较小的群体没有必要进行抽象封装。说白了就是通过简单的方法就能搞定,何必要大费周章呢。能见但就简单,在允许的情况下尽可能的简单,方便。工厂方法模式,可以说是简单工厂模式的一个进阶,能够完成对某一类对象的生产,当然这类对象需要成像承接口。当然允许既可以生产原创 2017-03-25 21:51:21 · 2849 阅读 · 0 评论 -
【设计模式】单例模式
单例模式作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。一。简解单例模式很好理解,拆看单,单一的;例,实例。合起来,单一的实例,哈哈,很简单吧,就是真个系统中只能出现某个类的一个实例,这就是单例模式。二。用途三。实例饿汉式/** * 单例模式懒汉方式实现 */public class EagerSingleton { pr原创 2017-03-25 17:00:02 · 698 阅读 · 0 评论 -
【设计模式】抽象工厂模式
抽象工厂模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。一。简解抽象工厂模式顾名思义就是对工厂的抽象(这不是废话),这种模式不是对产品级别的操作,而是对工厂类的封装。从上到下可以为:工厂接口–>工厂–>产品二。用途由于面向对象设计原则中的单一职责原则,一个工厂类只能生产一类产品,不能说一个工厂生产汽车全部零件然后组原创 2017-03-25 16:11:44 · 942 阅读 · 0 评论 -
【设计模式】工厂方法模式
工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 一。简解工厂方法模式是在简单工厂模式基础上做了一点改进,生产某一类方法的工厂,不仅仅局限于某个(简单工厂模式是生产某个)。二。用途 主要是用来根据需求生产某原创 2017-03-25 15:17:13 · 1787 阅读 · 0 评论 -
【设计模式】简单工厂模式
一。简解简单工厂模式顾名思义,一个简单个工厂((∩_∩)跟没说一样),事实上就是一个简单的工厂,根据用户需求生产不同的东西仅此而已。二。用途简单工厂模式主要是以一个工厂类对外工作,用户可根据需求,调用相应的生产方法,来生产不同的对象,实现程序和new 对象之间的解耦,避免了因对象更改而造成的大面积修改代码。三。案例测试类package zsl.简单工厂模式;public class Main {原创 2017-03-25 12:59:07 · 1198 阅读 · 0 评论 -
【设计模式】外观模式
外观模式(又称门面模式)是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。一。简解外观模式可以理解为,对一个功能系统进行了一定的封装(黑盒子),当然使用也不需要知道它如何实现(透明的),不用关心内部实现只需要使用它所提供的功能即可。二。用途在JavaEE开发中经常会分为dao层,service层,表现层等等,这些层与层之间的交原创 2017-03-30 22:48:13 · 1488 阅读 · 0 评论 -
【设计模式】桥接模式
设计模式大总结 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。一。简解桥接模式顾名思义,是在两个模块间搭的一个桥,这两个模块就是抽象化和实现 抽象由抽象类或者接口声明的,作为一类类的抽象 实现则是继承抽象类或者原创 2017-03-31 09:29:16 · 1747 阅读 · 0 评论 -
【设计模式】责任链模式
设计模式总结链接 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。一。简解责任链模式顾名思义,解决问题是可以通过某个链条进行解决。听起来不是十分精确,这种模式实原创 2017-03-31 15:13:29 · 679 阅读 · 0 评论 -
【设计模式】转载23种设计模式
java 23种设计模式 深入理解 以下是学习过程中查询的资料,别人总结的资料,比较容易理解(站在各位巨人的肩膀上,望博主勿究)创建型抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html工厂方法 http://www.cnbl原创 2017-03-15 19:53:03 · 464 阅读 · 0 评论 -
【设计模式】24种设计模式总结
24种设计模式总结(部分未完待续) 创建型(6)简单工厂模式工厂方法模式抽象工厂模式单例模式建造者模式原型模式 结构型(7)适配器模式代理模式桥接模式外观模式装配器模式组合模式享元模式 行为型(11)责任链模式命令模式迭代模式解释器模式中介者模式备忘录模式观察者模式状态模式策略模式模板方法模式访问者模式原创 2017-03-30 20:48:32 · 1983 阅读 · 0 评论 -
【设计模式】访问者模式
设计模式总结链接 访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。一。简解访问者模式是和向上转型原则恰巧相反, 向上转型指的是,子类可以无条件转型为父类(或者实现的接口)。 访问者模式是,知道父类,子类的实现变了依然可以调用。二。用途面向接口编程中就有访问者模式的身影,通过统一接口可以原创 2017-04-09 14:21:17 · 4341 阅读 · 0 评论 -
【设计模式】备忘录模式
设计模式总结链接 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。 一。简解原创 2017-04-09 13:49:33 · 3336 阅读 · 4 评论 -
【设计模式】模板方法模式
设计模式总结链接 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。一。简解模板方法是一种基于继承的代码复用的基本技术,很多地方需要重用另一个类许多方法时,可以使用继承的方式进行复用,同时还可以最其进行个性化的改造。二。用途主要是为了原创 2017-04-09 13:26:44 · 840 阅读 · 0 评论 -
【设计模式】状态模式
设计模式总结链接 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。一。简解状态模式这样理解“见机行事”,根据不同的情况采取不同的方式对待。 比如 Activity生命周期(安卓的东西不懂的话也木有关系),四种状态:活动状原创 2017-04-09 13:02:59 · 652 阅读 · 0 评论 -
【设计模式】中介者模式
设计模式总结链接 中介者模式是一种行为模式,用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。一。简解中介者模式和局域网中的用户服务器模式很类似: 最初在计算机中,想要给指定用户发请求,需要在每人使用网线的情况下以点到点的方式传输。这样不太方便,必须得等所有人都不使用网线传输的时候才能够使用,于是引进了一台局域网服务器原创 2017-04-09 12:31:12 · 896 阅读 · 0 评论 -
【设计模式】命令模式
设计模式总结链接 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。一。简解命令模式有点像一种浏览器服务器的模式,或者说是一种响应的模式,用户端需要可以通过请求和接收响应来获得自己需原创 2017-04-09 11:06:15 · 764 阅读 · 0 评论 -
【设计模式】迭代器模式
设计模式总结链接 迭代器模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集(集合)中的元素而不必暴露聚集的内部表象(internal representation)。一。简解迭代器模式和链表很像,只需要知道head即可通过逐个访问其next,迭代出其所有元素。迭代可以理解为反复,反复执行next。二。用途用来构建一个链条,当然和责任链不同,责任链模式中个元素是一种原创 2017-04-01 12:12:56 · 629 阅读 · 0 评论 -
【设计模式】解释器模式
设计模式总结链接 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。一。简解解释器模式可以理解为是翻译自己定义的操作,模式自己定义一种操作,提供用户使用,用户使用时需要通过调用解释器完成解释,从而执行操作。 也可以想作是将同一类操作抽象出来做成一个函数,但是每次都需要调用某个对象来使用这个函原创 2017-03-31 22:12:27 · 823 阅读 · 0 评论 -
【设计模式】策略模式
设计模式总结链接 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。一。简解策略模式可以理解为对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备原创 2017-03-31 21:53:10 · 545 阅读 · 0 评论 -
【设计模式】观察者模式
设计模式总结链接 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。一原创 2017-03-31 21:33:09 · 1494 阅读 · 0 评论 -
【设计模式】策略模式PK简单工厂模式
最近看设计模式,一开始讲了个工厂模式和设计模式,二者很像啊。他们都是用来动态创建对象的,大大的增强了程序的功能扩展性。工厂模式功能:可以根据需求,创建某个对象。 策略模式功能:可以根据需求,创建某个对象。功能几乎是一模一样,却别还是有的:“工厂”是批量生产的代表,“策略”是一对一的,一个问题一个策略, 看段代码: // 工厂模式生产对象 Object obj = O原创 2017-03-15 14:26:40 · 439 阅读 · 0 评论