设计模式
文章平均质量分 96
sothat-do
这个作者很懒,什么都没留下…
展开
-
设计模式的六大原则
单一职责原则(Single Responsibility Principle) 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责原创 2022-03-04 15:47:22 · 117 阅读 · 0 评论 -
BRIDGE桥接设计模式(结构型)
意图:将抽象部分与它实现部分分离,使他们都可以独立的变化适用性: - 不希望抽象与其实现部分有一个固定绑定的关系 - 类的抽象和他的实现都应该可以通过生成子类的方法加以切换。Bridge模式就可组合不同的抽象以及它的实现 - 对一个抽象的实现部分进行修改对客户不产生影响,客户代码不需要进行重新编译 - 想对客户完全隐藏抽象的实现部分结构 参与者:抽象类(Abstraction):定原创 2016-08-11 22:24:19 · 280 阅读 · 0 评论 -
设计模式学习-适配器模式(结构型)
设计模式五:适配器模式意图:将一个类的接口转换成客户希望的另外一个接口,使得以前由于接口不兼容不能一起工作的类可以一起工作适用性: 有一个现存的类,你想要使用,但是接口不符合你的需要。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对原创 2016-08-11 20:55:40 · 208 阅读 · 0 评论 -
设计模式学习-创建型
设计模式1 工厂模式factoryhttp://blog.csdn.net/hguisu/article/details/7505909 工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多原创 2016-08-11 19:50:13 · 228 阅读 · 0 评论 -
设计模式通俗理解
第10个设计模式,享元设计模式 运用共享技术有效地支持大量细粒度的对象转载 2016-08-22 22:05:15 · 2055 阅读 · 1 评论 -
Facade外观设计模式(结构型)
第九个设计模式 facadefacade模式定义了一个高层接口,这个接口使得子系统更加容易被使用。想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只要打开电池开关,他就可以跑。我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行了,这个开关其实就四驱车给我们的一个友好的组件,使得我们可以很方便的控制它。将一个系统划分成为若干个子系统有利于降低原创 2016-08-20 17:08:35 · 350 阅读 · 1 评论 -
Decorator装饰设计模式(结构型)
第八个设计模式意图 动态地给一个对象添加一些额外的职责。有时候我们需要给某个对象而不是整个类添加一些功能。适用性 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 处理那些可以撤消的职责。 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展, 为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。原创 2016-08-20 16:16:42 · 435 阅读 · 1 评论 -
composite组合设计模式(结构型)学习
第七个设计模式 组合模式 意图:将对象组合成树形结构以表示“部分-整体”层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。 适用性 - 你想表示对象的部分-整体层次结构 - 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。 结构 典型的组合对象结构如下: 参与者 component:是组合中的对象声明接口,在适当的原创 2016-08-20 13:59:46 · 459 阅读 · 1 评论 -
Template Method模板方法设计模式(类行为型)
概述在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序。但是某些步骤的具体实现是未知的,或者说某些步骤的实现与具体的环境相关。 例子1:银行业务办理流程 在银行办理业务时,一般都包含几个基本固定步骤: 取号排队->办理具体业务->对银行工作人员进行评分。 取号取号排队和对银行工作人员进行评分业务逻辑是一样的。但是办理具体业务是个不相原创 2016-08-30 16:00:02 · 344 阅读 · 0 评论 -
Strategy策略设计模式(对象行为型)
意图: 定义一系列的算法,把它们封装起来,并且使他们可相互替换。本模式使得算法可独立于使用它的客户而变化适用性 1)• 许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系统需要动态地在几种算法中选择一种。 2)• 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 /时间权衡的算法。当这些变体实现为一个算法的类层次时 ,可以使用策略原创 2016-08-30 15:01:56 · 289 阅读 · 0 评论 -
State状态设计模式(对象行为型)
意图: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了他的类。适用性 1) • 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。 2) • 代码中包含大量与对象状态有关的条件语句:一个操作中含有庞大的多分支的条件(if else(或switch case)语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常 , 有多个操作包原创 2016-08-30 14:15:25 · 398 阅读 · 0 评论 -
Observer观察者设计模式(对象行为型)
意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新适用性 在以下任一情况下可以使用观察者模式: • 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 • 当对一个对象的改变需要同时改变其它对象 , 而不知道具体有多少对象有待改变。 • 当一个对象必须通知其它对象,原创 2016-08-30 11:45:02 · 413 阅读 · 0 评论 -
mediator中介者设计模式(行为模式)
意图: 用一个中介者对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。适用性: • 1)系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解。 • 2)一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 • 3)一个对象引用其他很多对象并且直接与这些对象通信 ,导致难以复用该对象原创 2016-08-28 13:33:54 · 435 阅读 · 0 评论 -
Iterator迭代器设计模式学习(对象行为型)
迭代器设计模式 意图: 提供一种方法顺序访问一个聚合对象中各个元素,又不需要暴露这个对象的内部表示 适用性 访问一个聚合对象的内容而无需暴露它的内部表示。 需要为聚合对象提供多种遍历方式。 为遍历不同的聚合结构提供一个统一的接口 (即, 支持多态迭代) 结构 参与者 Iterator: 迭代器定义访问和遍历元素的接口。 ConcreteIterator: 具体迭代器实现迭原创 2016-08-22 21:25:15 · 337 阅读 · 1 评论