设计模式
benbenxiongyuan
这个作者很懒,什么都没留下…
展开
-
设计模式--责任链模式ChainOfResponsibility(行为型)
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配转载 2014-04-14 11:41:54 · 688 阅读 · 0 评论 -
设计模式六大原则之--依赖倒置原则(DIP)
1. 依赖倒置原则,(Dependence Inversion Principle, DIP )定义:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. D转载 2014-04-18 11:07:56 · 3341 阅读 · 0 评论 -
设计模式六大原则之--接口隔离原则(ISP)
1.接口隔离原则:(Interface Segregation Principle, ISP)定义:Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该依赖它不需要的接口)。或 The dependcy of one class to another one should转载 2014-04-18 11:24:28 · 3573 阅读 · 0 评论 -
设计模式六大原则之--单一职责原则(SRP)
1.单一职责原则,(Single Responsibility Principle).定义:There should never be more than one reason for a class to change,应该有且仅有一个原因引起类的变更。职责:业务逻辑,或者对象能够承担的责任,并以某种行为方式来执行。2.理解该原则提出了对对象职责的一种理想期望。对转载 2014-04-17 16:13:23 · 2906 阅读 · 0 评论 -
设计模式六大原则之--迪米特法则(LoD)
1.迪米特法则:Law of Demeter, LoD),也称最少知识原则(Least Knowledge Principle, LKP)定义:Only talk to your immedate friends.(只与直接的朋友通信)。一个对象应该对其他对象有最少的了解。(通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少)2.理解:2.1 只和朋友交转载 2014-04-18 15:14:25 · 1056 阅读 · 0 评论 -
设计模式六大原则之--开闭原则(OCP)
1.开闭原则:Open Closed Principle, OCP)定义:Software entities like classes, modules and functions should be open for extension but closed for modifications.(一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。)2.理转载 2014-04-18 15:21:03 · 23368 阅读 · 5 评论 -
设计模式--代理模式Proxy(结构型)
1.概述 因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供一致的接口给某个对象让它可以改变其内部功能,或者是从来不存在的功能? 可以转载 2014-04-10 10:33:14 · 775 阅读 · 0 评论 -
设计模式概论
1. 设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。 模式的经典定义:每个模式都描述了转载 2014-04-10 11:11:17 · 707 阅读 · 0 评论 -
设计模式--装饰器模式Decorator(结构型)
1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。 通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方转载 2014-04-10 11:43:09 · 708 阅读 · 0 评论 -
设计模式-- 观察者模式Observer(对象行为型)
1.概述一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进通信代码。或者,你只想简单的重新构造通信代码来避免类和类之间的相互依赖与相互从属。转载 2014-04-10 17:56:33 · 605 阅读 · 0 评论 -
设计模式--工厂模式Factory(创建型)
设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些转载 2014-04-10 10:47:53 · 613 阅读 · 0 评论 -
设计模式--外观模式Facade(结构型)
设计模式(九)外观模式Facade(结构型) 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计。转载 2014-04-11 17:52:46 · 588 阅读 · 0 评论 -
设计模式--原型模式Prototype(创建型)
1. 概述我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。例子1:孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来。例子2:寄个快递下面是一个邮寄快递的场景:“给我寄个快递。”转载 2014-04-11 17:38:24 · 687 阅读 · 0 评论 -
设计模式六大原则之--里氏替代原则(LSP)
1. 里氏替代原则,(Liskov Substitution Principle, LSP )定义:Functions that use pointers or referrnces to base classes must be able to use objects of derived classes without knowing it.(所有引用基类的地方必须能透明地使用其子类的转载 2014-04-18 10:36:59 · 1525 阅读 · 0 评论 -
设计模式--组合模式Composite(结构型)
1 定义:1.1 定义:Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.(将对象组合成树形结构以表示“部分-整体”的层次结构转载 2014-04-17 14:38:17 · 681 阅读 · 0 评论 -
设计模式--状态模式State(行为型)
1 定义:1.1 定义:Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.(当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类)。1.2 通用类图:一个更易理解的类图:角色解说:转载 2014-04-14 14:29:38 · 666 阅读 · 0 评论 -
设计模式--迭代器模式Iterator(行为型)
1 定义:1.1 定义:Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(它提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。)此模式是一个没落的模式,基本上没人会单独写一个迭代器模转载 2014-04-15 10:51:23 · 662 阅读 · 0 评论 -
设计模式--模板方法模式Template method(类行为型)
1.概述在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。例子1:银行业务办理流程在银行办理业务时,一般都包含几个基本固定步骤:取号排队->办理具体业务->对银行工作人员进行评分。取号取号排队和对银行工作人员进行评分业务逻辑是一样的。但是办转载 2014-04-15 11:43:42 · 632 阅读 · 0 评论 -
设计模式--策略模式Strategy(行为型)
1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通转载 2014-04-15 10:38:51 · 631 阅读 · 0 评论 -
设计模式--访问者模式Visitor(行为型)
1 定义:1.1 定义:Represent an operation to be performed on the elements of an object structure. Vistor lets you define a new operation without changing the classes of the elements on which it operates.转载 2014-04-15 18:12:29 · 650 阅读 · 0 评论 -
Visitor模式加深理解
一,静态分派:1,定义:发生在编译时期,分派根据静态类型信息发生,重载就是静态分派2,什么是静态类型:变量被声明时的类型是静态类型 什么是动态类型:变量所引用的对象的真实类型3,有两个类,BlackCat ,WhiteCat都继承自Cat如下调用class Cat{}class WhiteCat extends Cat{}class BlackCat转载 2014-04-15 19:21:17 · 589 阅读 · 0 评论 -
设计模式--建造者模式Builder(创建型)
1. 概述 在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。 例子1:买肯德基 典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是转载 2014-04-16 18:08:43 · 545 阅读 · 0 评论 -
设计模式--备忘录模式Memento(行为型)
1 定义:1.1 定义:Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later. (在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将转载 2014-04-15 16:33:29 · 672 阅读 · 0 评论 -
设计模式--中介者模式Mediator(行为型)
1 定义:1.1 定义:Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary thei转载 2014-04-15 16:59:37 · 671 阅读 · 0 评论 -
设计模式--命令模式Command(行为型)
1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 例子1:电视机遥控器 : 遥控器是请求的发送者,电视机是请求的接收者,遥控器上有一些按钮如开,转载 2014-04-16 19:48:41 · 726 阅读 · 0 评论 -
设计模式--解释器模式Interpreter(行为型)
1 定义:1.1 定义:Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.(给定一门语言,定义它的方法的一种表示,并定义一个解释器,该解释器使转载 2014-04-16 20:08:21 · 668 阅读 · 0 评论 -
设计模式--桥接模式Bridge(结构型)
1. 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?例子1:设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:•第一种转载 2014-04-17 11:38:57 · 1223 阅读 · 0 评论 -
设计模式--适配器模式Adapter(结构型)
1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。 例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源适配器。可以使用这个电源适配器充电。这个iphone的电源适转载 2014-04-17 14:22:36 · 605 阅读 · 0 评论 -
设计模式--享元模式FlyWeight(结构型)
1 定义:1.1 定义:Use sharing to support large numbers of fine-grained objects efficiently.(使用共享对象可以有效地支持大量的细粒度的对象。)细粒度对象:不可避免地使得对象数量多且性质相近,可将这些对象的信息分为两个部分:内部状态(intrinsic)与外部状态(extrinsic)。内部状态:对象可共享转载 2014-04-15 19:50:14 · 600 阅读 · 0 评论