随笔分类 -  设计模式

记录设计模式学习历程
摘要:一、模式名 责任链模式, Chain of Responsibility 二、解决的问题 责任链模式,类似于“踢皮球”,在日常生活中,我们经常可以看到“踢皮球”现象,比如去政府办事,可能需要找几个部门,才能解决问题,因为他们都会告诉你,他们不负责这个事,需要找谁谁谁的,这种现象就是责任链模式。 责任链模式的优点是解耦请求方和处理方,能让请求方和处理方都成为灵活可扩展的组件。 三、解决方案 ... 阅读全文
posted @ 2019-07-11 00:56 锢浪熟阳 阅读(216) 评论(0) 推荐(0)
摘要:一、模式名 观察者模式, Observer 二、解决的问题 观察者模式,从模式名字上就可以看出该模式的功能,即观察某个对象的状态。换一中表述,可能对观察者会有更加清楚的了解,即订阅发布模式,被观察对象在状态变化时显式地通知观察对象,这种协作关系和发布订阅比较类似。被观察对象可以看作为消息的生产者,而观察对象即为消息的消费者。 观察者模式的优点就是在被观察对象状态变化时能够通知观察对象,实现被观... 阅读全文
posted @ 2019-07-08 00:37 锢浪熟阳 阅读(148) 评论(0) 推荐(0)
摘要:一、模式名 装饰者模式, Decorator 二、解决的问题 装饰者模式顾名思义,就是在原来的对象上加入一些修饰的部分,用以丰富原有对象的功能。但装饰器模式中的装饰器类和被装饰的对象保持一致,一般是继承或实现同一个父类或接口。 三、解决方案 装饰者模式的UML图如下所示。 示例代码如下 public class DecoratorExer { public static void main... 阅读全文
posted @ 2019-06-23 17:43 锢浪熟阳 阅读(96) 评论(0) 推荐(0)
摘要:一、模式名 适配器, Adapter 二、解决的问题 适配器模式就像我们平常使用的手机充电器转接头,把通用接口转换为非通用的Type-C接口,这样使用Type-C接口充电的手机就能使用平常的充电器充电。 适配器模式也是如此,通过定义一个适配器类,将两个无法统一、无法适配的类整合,使得它们能在一起工作。一般适配器模式用于一个类想使用另外一个类的某些方法,但这两个类无法兼容,不是继承于同一个类或实现了... 阅读全文
posted @ 2019-06-22 23:47 锢浪熟阳 阅读(152) 评论(0) 推荐(0)
摘要:一、模式名 抽象工厂, Abstract Factory 二、解决的问题 抽象工厂由“抽象”和"工厂"两个词组成,前者代表了使用了抽象类,后者代表了实现了工厂组装零件的模式。都知道,工厂完成零部件的生产后,再组装成对应的产品,抽象工厂正是实现了这个过程。 抽象工厂用于存在大量可拓展组件,并需要组装这些组件的场景。 三、解决方案 抽象工厂模式的UML图如下所示。 代码如下: public clas... 阅读全文
posted @ 2019-06-22 23:41 锢浪熟阳 阅读(208) 评论(0) 推荐(0)
摘要:一、模式名 外观, Facade 二、解决的问题 外观模式,顾名思义,对外提供了应用的统一外观接口。外观模式在大型系统应用比较多,大型系统中,类和方法之间的调用关系和依赖关系复杂,有时无法完全了解,比如完成某项工作,需要使用十几个类和方法完成,可能这十几个类和方法的调用顺序,只有某些核心员工才完全了解,对于新人很不友好。为了降低上层系统或调用方的复杂性,提出了外观模式,用于为上层系统或调用方提供统... 阅读全文
posted @ 2019-06-22 16:23 锢浪熟阳 阅读(248) 评论(0) 推荐(0)
摘要:一、模式名 策略, Strategy 二、解决的问题 策略,这个词中国人应该不陌生,从古代的孙子兵法,到现代的毛主席军事思想,无不充斥着策略。策略可以看做是解决问题的一种思想、办法,比如古代攻城略地,一般会使用强攻、水淹、火烧、离间、围城打援、心理战等,这些都是攻城的策略,当然这些策略有好有坏。在软件设计中,也存在很多策略,即一个问题有多种解决方法,每种解决方法可能针对不同的问题,或者每种解决方法... 阅读全文
posted @ 2019-06-22 16:20 锢浪熟阳 阅读(337) 评论(0) 推荐(0)
摘要:一、 模式名 模版方法,Template Method 二、 解决的问题 模版方法在父类中定义了某种算法的骨架,在子类中实现该算法骨架中调用的某些方法,从而达到改变该算法的目的。 如果不使用这种设计模式实现某些解决流程相同,只不过具体实现不同的问题,那么需要将该问题的解决流程重复多写几遍,增加了系统代码的冗余,降低了系统代码的灵活性。如果该问题的解决流程需要调整,那么所有利用该解决流程的方案都需要... 阅读全文
posted @ 2019-06-21 00:02 锢浪熟阳 阅读(155) 评论(0) 推荐(0)
摘要:一、模式名 代理, Proxy 二、解决的问题 “代理”这个词我们应该不陌生,在我们的生活中经常使用代理。例如:很多去国外旅游的人都会通过旅游中介公司购买机票、国外景点门票以及规划路线和寻找导游等,其实这就是一种代理模式,把自己不想直接做和不了解的事情交给专业的人去做,这样更加放心,效率也更高。 在软件设计中,同样如此,很多优秀的开发框架都是会使用代理模式。在软件设计中的代理模式主要用于: 1. ... 阅读全文
posted @ 2019-06-20 23:59 锢浪熟阳 阅读(202) 评论(0) 推荐(0)
摘要:一、模式名 工厂方法, Factory Method 二、解决的问题 工厂方法,顾名思义,就是类似于工厂的方法,而工厂具有什么特点呢?我们都知道工厂可以批量生产某类商品,而设计模式正是借用了这个特点。工厂方法模式可以用于统一生成某类对象。将对象的生成统一到工厂方法中,当新增某类对象时,可以增加新对象类和对应的工厂类即可实现扩展,提高了程序的可扩展性。 三、解决方案 工厂方法分为简单工厂方法和工厂方... 阅读全文
posted @ 2019-06-20 23:54 锢浪熟阳 阅读(155) 评论(0) 推荐(0)
摘要:一、模式名 迭代器, Iterator 二、解决的问题 迭代器主要用于按照某种顺序遍历访问某个集合,提出的目的是为了解耦对集合遍历过程和集合对象。访问集合的方法有很多,使用迭代器可以自定义遍历集合元素的方法,每当新增一种访问方法时,不需要修改集合类,只需新增新的访问集合的迭代类,保证了开闭原则。 三、解决方案 迭代器的UML如下图所示 代码如下 interface Collection { ... 阅读全文
posted @ 2019-06-19 00:15 锢浪熟阳 阅读(154) 评论(0) 推荐(0)
摘要:一、模式名 单例模式,Singleton 二、解决的问题 单例模式是设计模式中使用比较多并且形式比较简单的设计模式。单例模式用于提供一种方式,为某个类产生唯一实例。 单例模式主要应用在对象创建频繁并且对象创建或销毁资源消耗大的情况。为提高系统效率,一般会选用单例模式。 三、实现 实现单例分为两个步骤 阅读全文
posted @ 2019-06-19 00:07 锢浪熟阳 阅读(154) 评论(0) 推荐(0)
摘要:一、何谓设计模式 设计模式重在在“模式”二字,模式代指程式化、模版化问题和其解决方案。在我们生活中存在很多模式,比如:背课文就存在模式,一般先通读,再一段一段背诵,最后整合,同样也存在其他背课文的模式。同样,在建筑设计中,也存在模式,比如中国传统古典建筑外观都差不多,它们使用的就是同一个设计和建造模式。模式就是人类在日常生产生活中,对经常性发生的问题抽象提取出的比较好的解决方案。 这里的设计模式主... 阅读全文
posted @ 2019-06-18 23:51 锢浪熟阳 阅读(162) 评论(0) 推荐(0)