设计模式
低调的洋仔
春风桃李花开日,秋雨梧桐叶落时。西宫南内多秋草,落叶满阶红不扫。
展开
-
"围观"设计模式(3)--依赖倒置原则(DIP,Dependence Inversion Principle)
In object-oriented programming, the dependency inversion principle refers to a specific form of decoupling software modules. When following this principle, the conventional dependency relationships es原创 2016-04-16 15:24:05 · 2267 阅读 · 5 评论 -
"围观"设计模式(28)--总结之设计模式六大准则
设计模式源码下载地址设计模式源码下载地址1 单一功能原则单一功能原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。所有它的(这个类的)服务都应该严密的和该功能平行(功能平行,意味着没有依赖)。围观设计模式(1)--单一功能原则 2 里氏替换原则在面向对象的程原创 2016-07-09 20:59:30 · 2595 阅读 · 0 评论 -
"围观"设计模式(29)--创建型设计模式总结(单例、工厂、原型、创建者)
设计模式源码下载地址设计模式源码下载地址1 单例模式单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获原创 2016-07-09 21:06:29 · 2564 阅读 · 0 评论 -
"围观"设计模式(30)--结构型设计模式总结(适配器、代理、装饰、外观、桥梁、组合、享元)
设计模式代码下载地址设计模式代码下载地址1 适配器模式在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。----WIKIPEDIA个人理解适配器模式:将两个不一致或者说原创 2016-07-09 21:14:18 · 2918 阅读 · 0 评论 -
"围观"设计模式(31)--行为型设计模式总结(模板、观察者、策略、状态、责任链、命令、访问者、中介者、备忘录、解释器)
设计模式源代码下载设计模式源代码下载1 模板方法模式模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。----WIKIPEDIA个人理解模板方法模式相对而言比较简单,一般的都是由抽象类定义好模板方法,然后,子类通过继承并实现其父类中定义好的模板中需要执行的具体的方法,调原创 2016-07-09 21:23:03 · 3348 阅读 · 4 评论 -
"围观"设计模式(16)--结构型之组合模式(Composite Pattern)
组合模式也叫合成模式,有时又叫做部分-整体模式,主要是用来描述部分与整体的关系,其定义为:将对象组合成树形结构以表示“整体与部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。----设计模式之禅个人理解组合模式目的是将整体与部分组合成树形来表示整体与部分的层次,使得用户对单个对象和组合对象的使用具有一致性的接口,也就是通过接口对子对象统一操作。案例公司原创 2016-05-25 20:56:12 · 1673 阅读 · 2 评论 -
"围观"设计模式(20)--行为型之策略模式(Strategy Pattern)
策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。----WIKIPEDIA个人理解策略模式从名字就可以看出,有多种选择,不同的策略对应着不同的实现方式,那么一般的形式为一个接口采用多种实现方式(也就是提供了不同的策略),然后再提供一个策略原创 2016-06-12 19:05:04 · 2968 阅读 · 0 评论 -
"围观"设计模式(15)--结构型之桥梁模式(Bridge Pattern)
桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。事物对象仅是一个抽象的概念。如“圆形”、“三角形”归于抽象的“形状”之下,而“画圆”、“画三角”归于实现行为的“画图”类之下,然后由“形状”调用“画图”。----WIKIPEDIA个人理解桥梁模式的核心在于解耦,通过抽象化将具体的事物抽象成一般的事物,也就是具有共性的东西原创 2016-05-24 21:45:11 · 8524 阅读 · 2 评论 -
"围观"设计模式(21)--行为型之状态模式(State Pattern)
状态模式--允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。----百度百科个人理解状态模式应该说可以理解为某种状态下,程序的执行流程可能会发生变化,类似于交通灯,红灯的时候停下,绿灯行走,黄灯时等一等,这就是三种状态下我们人对其作出的相应的变化。再比如,公交车应该都坐过的,公交车停车的时候,可以上车和下车;公交车行驶的时候,不允许下车和上车,那么,原创 2016-06-13 15:11:04 · 4289 阅读 · 2 评论 -
"围观"设计模式(24)--行为型之访问者模式(Visitor Pattern)
访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。个人理解访问者模式,扩展能力很好,符合开闭原则,对于扩展开放,对修改关闭。但是从类的实现情况来看,访问者类和元素类相互之间依赖,依赖关系较强,不过可以通过抽象类或者接口的形式,将依赖关系转移到上层抽象类或者接口中,从而降低对实现类的依赖。访问者模式的出发点:业务规则要原创 2016-06-29 13:52:32 · 4029 阅读 · 0 评论 -
"围观"设计模式(25)--行为型之中介者模式(Mediator Pattern)
用一个对象封装一系列的对象交互,中介者使对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的独立。个人理解当多个对象之间存在着过多的耦合时,可以通过中介者模式进行解耦,将具体的对象之间的耦合转为中介者与具体对象的耦合,假如说之前是三个对象的相互之间的耦合,转为中介者与具体类的耦合之后,从耦合性上大大的降低了,这样如果再来对其进行修改的话,那么变更部分主要在中介者原创 2016-07-09 15:45:02 · 2315 阅读 · 0 评论 -
"围观"设计模式(26)--行为型之备忘录模式(Memento Pattern)
所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。个人理解备忘录模式是用于将对象的状态暂存在某些特殊情况下可以将其进行恢复的模式,可以通过多种方式实现,包括clone以及一般方式以及多种参数的备忘录等形式。标准的备忘录在项目中很难直接应用进去,多数为其变形后的处理方式。备忘录模式角色原创 2016-07-09 18:14:17 · 2104 阅读 · 1 评论 -
"围观"设计模式(2)--里氏替换原则(LSP,Liskov Substitution Principle)
在面向对象的程序设计中,里氏替换原则(Liskov Substitution principle)是对子类型的特别定义。它由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次会议上名为“数据的抽象与层次”的演说中首先提出。里氏替换原则的内容可以描述为: “派生类(子类)对象能够替换其基类(超类)对象被使用。” 以上内容并非利斯科夫的原文,而是译自罗伯特·马丁(Robert Ma原创 2016-04-15 21:06:54 · 7600 阅读 · 4 评论 -
"围观"设计模式(22)--行为型之职责链模式(Chain Of Responsibility Pattern)
责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。----WIKIPEDIA个人的理解责任链模式用到了链表的数据结构,存在一定的次序性,A->B->C这样的一条链表,在责任链模式中,请求原创 2016-06-17 22:11:41 · 6285 阅读 · 2 评论 -
"围观"设计模式(27)--行为型之解释器模式(Interpreter Pattern)
解析器是一种按照规定的语法进行解析的例子,在现在的项目中使用较少,定义如下:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器用于解释语言中的句子。个人理解解释器模式在项目中很少使用,因为他会引起效率、性能以及维护等问题,准备使用该模式时可以考虑开源框架如:Expression4J、MESP、Jep等。解释器模式一般用来解析比较标准的字符集,比如说SQL语法分析等原创 2016-07-09 20:46:11 · 1857 阅读 · 0 评论 -
"围观"设计模式(18)--行为型之模板方法模式(TemplateMethod Pattern)
模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。----WIKIPEDIA个人理解模板方法模式相对而言比较简单,一般的都是由抽象类定义好模板方法,然后,子类通过继承并实现其父类中定义好的模板中需要执行的具体的方法,调用子类对象的模板方法时,会执行该类中的具体实现的方法。这个模式我个人的感觉有点原创 2016-06-06 21:25:09 · 1889 阅读 · 4 评论 -
"围观"设计模式(14)--结构型之外观模式(Facade Pattern)
外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。----WIKIPEDIA个人理解当一个项目中出现比较杂乱的调用关系时,类与类之间的耦合关系过于复杂,为了降低耦合度,我们可以采用一个公共的接口与其他类发生耦合,这样可以尽量大的降低外界与该系统的耦合度,同时降低了整个系统的复杂度,外观模原创 2016-05-23 21:17:05 · 6542 阅读 · 0 评论 -
"围观"设计模式(1)--单一职责原则(SRP,Single Responsibility Principle)
沉寂了一个月的时间,仔细学习了下设计模式,从本篇博文开始陆续更新设计模式系列的文章,我给它起了个有意思的名字叫做:“围观”设计模式,当然围观是加引号的,我写博文分享的目的一方面是将自己学到的一些心得体会分享给大家,另一方面是博文与实际的案例结合,达到可以用于实际项目中的目的。希望看到博文的朋友多多提出宝贵的建议与批评,我会虚心的接受。单一功能原则(Single responsibili原创 2016-04-13 11:16:00 · 2427 阅读 · 6 评论 -
"围观"设计模式(4)--接口隔离原则(ISP,Interface Segregation Principle)
接口隔离原则(英语:interface-segregation principles, 缩写:ISP)指明没有客户(client)应该被迫依赖于它不使用方法。接口隔离原则(ISP)拆分非常庞大臃肿的接口成为更小的和更具体的接口,这样客户将会只需要知道他们感兴趣的方法。这种缩小的接口也被称为角色接口(role interfaces)。接口隔离原则(ISP)的目的是系统解开耦合,从而容易重构,更改和重原创 2016-04-17 13:49:00 · 2366 阅读 · 3 评论 -
"围观"设计模式(6)--开闭原则(Open/Closed Principle)
在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程。开闭原则的命名被应用在两种方式上原创 2016-04-18 16:39:02 · 4976 阅读 · 2 评论 -
"围观"设计模式(5)--迪米特法则(Lod,Law of Demeter)或最少知道原则(Least Knowledge Principle)
得墨忒耳(迪米特)定律(Law of Demeter,缩写LoD)亦称为“最少知识原则(Principle of Least Knowledge)”,是一种软件开发的设计指导原则,特别是面向对象的程序设计。得墨忒耳(迪米特)定律是松耦合的一种具体案例。该原则是美国东北大学在1987年末在发明的,可以简单地以下面任一种方式总结: 1. 每个单元对于其他的单元只能拥有有限的知识:只是与当原创 2016-04-18 13:08:21 · 2117 阅读 · 1 评论 -
"围观"设计模式(7)--创建型之单例模式(Singleton Pattern)
单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。----维基百科(WIK原创 2016-04-19 21:41:23 · 4670 阅读 · 2 评论 -
"围观"设计模式(10)--创建型之原型模式(Prototype Pattern)
原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。----WIKIPEDIA首先看下面这样的一个例子,使用本人自黑一下,实现Clonable原创 2016-05-14 21:10:34 · 9142 阅读 · 0 评论 -
"围观"设计模式(11)--结构型之适配器模式(Adapter Pattern)
在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。----WIKIPEDIA个人理解适配器模式:将两个不一致或者说无法直接使用的类或者接口通过适配器模式进行兼容,使得他们可以在一块使用。适配原创 2016-05-15 21:15:32 · 7401 阅读 · 0 评论 -
"围观"设计模式(9)--创建型之创建者模式(Builder Pattern)
生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。----WIKIPEDIA个人的理解:建造者模式可以设置不同的属性或者行为,创建出不一样的对象。比如说生产汽车,假如有三个重要的工序,塑形、拼装、上色。那么可以通过创建者模式原创 2016-05-04 21:33:37 · 5434 阅读 · 0 评论 -
"围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
工厂模式的核心思想在我认为是将类创建的权利授予给工厂类,其他的类不允许创建,授予了权限的类创建好之后,需要某些的对象的时候,可以去工厂当中去取。也就是像一个工厂一样,用的人不需要关心对象怎么来的,你只需要关心怎么用就好了。工厂模式细分为三种,简单工厂、工厂方法、抽象工厂三种模式。这三种模式比较相似,往往会引发混淆,本文主要结合实际的例子去进行区分。理清三者之间的关系与适用范围。原创 2016-04-21 22:10:43 · 7368 阅读 · 0 评论 -
"围观"设计模式(12)--结构型之代理模式(Proxy Pattern)
维基百科代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。所谓的代理者是指一个类可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂贵或无法复制的资源。----WIKIPEDIA个人理解代理模式就是找另外的一个对象作为代理去为你实施请求,代理模式分为两种,一种是静态代理模式,另外一种是动态代理模式,静态代理原创 2016-05-17 20:01:30 · 5220 阅读 · 0 评论 -
"围观"设计模式(13)--结构型之装饰模式(Decorator Pattern)
修饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。----WIKIPEDIA个人理解相比而言我对装饰模式的理解还不是很深入,在项目中还不知道该怎么去使用它,或许是没有遇到需要装饰模式的情景吧,我对于装饰模式的理解是通过装饰模式可以实现对功能的扩充,由此我想到了面向切面编程原创 2016-05-18 22:18:15 · 6479 阅读 · 9 评论 -
"围观"设计模式(23)--行为型之命令模式(Command Pattern)
在面向对象程式设计的范畴中,命令模式是一种设计模式,它尝试以物件来代表实际行动。命令物件可以把行动(action) 及其参数封装起来,于是这些行动可以被:重复多次取消(如果该物件有实作的话)取消后又再重做这些都是现代大型应用程序所必须的功能,即“复原”及“重复”。----WIKIPEDIA个人理解命令模式是一个高内聚的模式,它将一个请求封装为一个对象,让你使用不原创 2016-06-25 17:00:04 · 4200 阅读 · 0 评论 -
"围观"设计模式(17)--结构型之享元模式(Flyweight Pattern)
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。----WIKIPEDIA个人理解共享,内存消耗大的时候应考虑对象的共享,共原创 2016-06-04 15:16:58 · 7587 阅读 · 2 评论 -
"围观"设计模式(19)--行为型之观察者模式(Observer Pattern)
观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。----WIKIPEDIA个人理解观察者模式,就是使得被观察者中持有观察者的对象实例,在发生某些事件的时候,通过notify“通知”观察者,完成相应的操作,他也叫作发布-订阅模式,原创 2016-06-08 20:08:03 · 4629 阅读 · 2 评论