设计模式
文章平均质量分 74
爬坑仰望天空
这个作者很懒,什么都没留下…
展开
-
建造者模式(Builder)
一、基本定义:1、意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2、适用场景: * 多个组成部分,都可以装配到同一个对象,但是产生的结果不相同 * 相同的方法,不同的执行顺序,产生不同的事件结果 例:电脑含有很多零配件,可以算是一个复杂对象。其中内存卡,主板、CPU等都是电脑的组成部分,如果构建一台电脑,不需要知道是如何组装的,只需要提供所需要的...原创 2018-05-13 19:40:41 · 298 阅读 · 0 评论 -
模板方法模式
一、基本概念:1、定义: 在父类中定义算法的框架(方法),将部分实现延迟到子类中,让子类可以重新定义算法中的某些步骤。 2、类图: * AbstractClass表示抽象模块,内部方法一般分为基本方法和模板方法两种。基本方法在父类中无具体实现,需要在子类进行相关实现。模块方法是定义在父类中,完成对模板方法的调用。 * 两个子类是具体模板,负责对基本方法的具体实现 3、注意事项: ...原创 2018-04-29 21:01:57 · 115 阅读 · 0 评论 -
单例模式
一、基本概念定义:确保一个类只有一个实例 优点: * 内存中只有一个实例,可减少内存使用,尤其是需要频繁创建、销毁对象的场景,单例模式比较有优势。 * 避免对资源的多重占用,比如读配置、写文件等操作,只有一个对象去操作资源,避免了多个内存对象对资源的同时操作。 * 单例可设置全局的访问点,共享资源访问。 缺点: * 扩展比较困难,一般单例没有接口 * 对测试不力 * 单例模式...原创 2018-04-07 19:59:09 · 113 阅读 · 0 评论 -
代理模式
代理模式一、相关概念:Head First设计模式: 代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问主要作用:控制对象访问 - 扩展目标对象的功能:例如演员(目标对象),有演戏的功能,找一个经纪人(代理),会额外提供收费的功能,实际上是代理的功能,而不是演员的功能。 - 限制目标对象的功能:例如经纪人对收费不满意,只让演员演一场戏,对演员的功能进行了部...原创 2018-02-16 21:13:49 · 163 阅读 · 0 评论 -
策略模式
一、基本概念1、定义: 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变换。 2、类图: * Context对象: 封装可能存在的策略变化,屏蔽其他模块对算法的直接访问 * Stategy抽象策略:定义通用算法规则 * ConcreteStategy具体策略:含有具体的算法 3、应用场景: * 对调用者隐藏算法具体...原创 2018-06-02 18:52:02 · 143 阅读 · 0 评论 -
观察者模式
一、基本概念1、定义: 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新。 例如:天气预报服务,一旦你订阅该服务,,每天一旦有天气信息更新,它就会及时向你发送最新的天气信息。 2、结构图 * Subject:抽象被观察者,会将所有观察者对象保存到一个集合中,提供方法来添加和删除观察者。 * ConcreteSubject:具...原创 2018-05-27 17:10:23 · 205 阅读 · 0 评论 -
装饰模式和Context类结构
一、基本概念:1、定义:动态地给一个对象添加一些额外的职责。装饰模式比子类就增加功能来说更为灵活。2、应用场景: * 需要扩展一个类的功能。 * 动态的为一个对象增加功能,而且还能动态撤销。 3、缺点: 多层装饰者存在的层级复杂的情况4、通用类图: * Component:抽象类或者接口,这是装饰者和被装饰者都需要实现的接口或者继承的基类。 * ConcreteC...原创 2018-06-21 17:14:58 · 470 阅读 · 0 评论 -
适配器、装饰者、代理模式对比
一、适配器的基本概念1、定义: 将一个接口转换为另一个客户期望的接口。2、应用场景: 你想使用一个已经存在的类,而它的接口不符合你的需求。 类似于一个转接口,将电源线的接口转成你电脑可用的接口。3、类图: * Target:期待的目标接口 * Adaptee:原来需要转换的目标 * Adapter:适配器角色。目的是将原来的目标转换成客户期望的目标二、实例一个mp...原创 2018-07-16 19:24:57 · 630 阅读 · 0 评论