设计模式详解(图)

摘自:http://blog.csdn.net/ywjun0919/article/details/10494793

Factory Pattern(工厂模式):1. 创建对象的接口,封装对象的创建;2. 使具体化类的工作延迟到子类中。(维护一类对象)

AbstractFactory Pattern(抽象工厂 模型):该模式将一组对象的创建封装到一个用于创建对象的类中。(解决的问题:要创建一组或者相互依赖的对象)。

Singleton Pattern(单例模式):该模式在面向纯粹的面向对象的范式中用于创建唯一的实例,值得注意的是Singleton不能被实例化,因此将其构造函数声明为protected或private类型。Singleton Pattern经常与Factory Pattern结合使用,因为Factory对象只能有一个。

Builder Pattern(创建者模式):将一个复杂的对象的构建与它的表示分离,使得同样的构建构成可以创建不同的表示。如建筑师画图纸,而工人建造房屋。

Prototype Pattern(原型模式):提供一个通过已存在对象进行新对象创建的接口(clone)。(浅拷贝和深拷贝)

Bridge Pattern(桥梁模式):将抽象部分与实现部分分开实现,使他们都可以独立地变化,并使用组合的方式将多维度的抽象方法联系在一起。比如咖啡分小杯、中杯、大杯以及加奶和不加奶,则抽象部分为:小杯、中杯、大杯,行为为:加奶和不加奶。

Adapter Pattern(适配器模式):适配就是由“源”到“目标”的适配,而当中链接两者的关系就是适配器。它负责把“源”过度到“目标”。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式分为两种:① 面向类的设计模式;② 面向对象的设计模式。

① 面向类的适配器:该模式使用继承和接口实现的方式复用需要适配器的类。

② 面向对象的适配器:该模式使用组合的方式实现需要复用的类。

Decorator模式(装饰模式):动态地给一个对象添加一些额外的职责。

Composite模式(组合模式):将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

Flyweight模式(享元模式):使用共享技术实现元素的共享。

Facade模式(外观模式):要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。

Proxy模式(代理模式):不通过要操作对象本身去操作这个对象,而是通过一个能控制这个对象的对象(代理)去操作这个对象。

Template模式(模板模式):逻辑框架相同,但是对某一个业务逻辑(算法实现)在不同的对象中有不同的实现方式。Template采用继承的方式实现这一点(strategy模式采用组合的方式去解决)。

Strategy模式(策略模式):解决与Template模式相同(类似)的问题。Strategy模式将逻辑(算法)封装到一个类中,通过组合的方式将具体算法的实现在组合对象中实现,通过委托的方式将抽象接口的实现委托给组合对象实现。

State模式(状态模式):人或事物有不同的状态,每种状态又有其特定的表现,在这些状态下又使一个状态转移到另一个不同的状态。

Observer模式(观察者模式):Observer模式定义对象间的一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。(如视图-文档)

Memento模式(备忘模式):在不破坏封装性的情况下,捕获并保存一个类的内部状态,可以利用该保存的状态实施恢复操作。

Mediator模式(中介者模式):用一个中介对象来封装一系列关于对象交互行为。如MVC中的Controller。

Command模式(命令模式):命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。

Visitor模式(访问者模式):在不改变原有类结构的基础上不断添加新的功能。缺点:破坏了封装性;Concretement扩展困难:每添加一个Element的子类,就要修改Visitor的接口,使得可以提供给这个新增加的子类的访问机制。

Chain of Responsibility模式(职责链模式):Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。

Iterator模式(迭代模式):提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。具体应用容器类(Vector、Set等)。

Interpreter模式(解释器模式):‍给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。实例应用:正则表达式。

最后:各个模式的使用不一定是相互独立,而是可以融合。

时间: 2024-12-15 02:29:50

设计模式详解(图)的相关文章

设计模式详解(图码)

摘自:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同

编程常用设计模式详解--(中篇)(适配器、装饰、代理、外观、桥接、组合、享元)

摘自:http://blog.csdn.net/zhangerqing/article/details/8239539 我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我们看下面的图: 6.适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器

JAVA:23种设计模式详解(转)

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用 设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我

iOS中MVC等设计模式详解

iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计模式是被大家广为熟悉和使用的模式,实际上在移动开发中尤其ios开发中,这种模式被发挥到淋漓尽致 MVC设计模式包括三个部分:模型.视图和控制器. 模型包含数据.信息,逻辑,或对象被认为是部分的业务层的iOS应用. 视图包含所有的用户信息的组件,如文本区域,按钮,滑块,被认为是表示层的一个iOS应用.

JAVA:23种设计模式详解(转)2

我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我们看下面的图: 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式.首先,我们来看看类的适配器模式,先看类图: 核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时

编程常用设计模式详解--(上篇)(工厂、单例、建造者、原型)

参考来自:http://zz563143188.iteye.com/blog/1847029 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1

nstallShield制作打包程序详解(图)

InstallShield产品,是安装工具领域事实上的标准.InstallShield 软件是软件安装.配置软件包和升级解决方案领域内公认的标准.InstallShield已经成为安全安装软件的标准解决方案,涉及全球6.9万多个开发组织和5亿台电脑.公司提供广泛的产品和服务,为软件供应商.系统管理员以及最终用户提供成功的销售.管理和应用安装.本文将以InstallShield10.5 Premier Edition为例详述打包的过程.使用工程助手(Project assistant)设计    

后缀数组学习笔记【详解|图】

后缀数组学习笔记[详解] 老天,一个后缀数组不知道看了多少天,最后终于还是看懂了啊! 最关键的就是一会儿下标表示排名,一会用数值表示排名绕死人了. 我不知道手跑了多少次才明白过来.其实我也建议初学者手跑几遍,但是一定要注意数组的意义,否则就是无用功. 数组含义: s[ ]:输入的字符串,预处理的时候会在末尾加上一个0 sa[ ]:它的下标就是后缀排名 x[ ] = t[ ]:用来保存第一关键字排名,注意!它的数值是排名.初始时恰好是字符串的ASCII码.字典序嘛! y[ ] = t2[ ]:它的

10大APP界面框架设计模式详解

随着移动互联网的发展,移动app已经成为了每个互联网公司的标配了,那作为产品经理,我们如何设计出更加符合用户体验的app产品呢?今天和大家分享的就是10中最常见的app界面光甲设计模式,一起来看看吧. 1.标签导航 标签导航是十大界面框架设计里最常用的界面框架设计,也是被业界之内公认的一种普遍使用的页面框架设计.那么这种页面框架设计在作业方面对一个用户来说也是最常见的一种页面框架设计,比如说微博.微信.手机百度.支付宝.淘宝,这些我们所谓的超级APP都是运用的标签导航,无一例外.从这个角度也可以