随笔分类 -  设计模式

摘要:首先这里先讲下复合模式的定义,复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。具体场景和例子这里就不介绍了。 好了,现在让我们看下什么是模式。 模式:是在某情境下,针对某问题的某种解决方案。 情境就是应用某个模式的情况下,这应该是会不断出现的情况。 问题就是你想在某情境下达 阅读全文
posted @ 2017-03-14 18:59 哀&RT 阅读(156) 评论(0) 推荐(0)
摘要:代理模式:为另一个对象提供一个替身或占位符以访问这个对象。 在我们学习代理模式之前,我们先了解下代理模式中的三个角色。 抽象角色:声明真实对象和代理对象的共同接口。 代理角色:代理对象角色内部含有真实对象的引用,从而可以操作真实对象。 同时代理对象提供与真实对象相同的接口,以便任何时刻都能替代真实对 阅读全文
posted @ 2017-03-13 20:43 哀&RT 阅读(181) 评论(0) 推荐(0)
摘要:状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 策略模式和状态模式时双胞胎,策略模式时围绕可以互换的算法来创建成功业务的。状态模式时通过改变对象内部的状态来帮助对象控制自己的行为。 下面我们看看状态模式的场景 场景1:有一个扭糖果机器,在投入1元硬币后,扭动曲柄,然后机 阅读全文
posted @ 2017-03-09 21:14 哀&RT 阅读(197) 评论(0) 推荐(0)
摘要:组合模式:允许你讲对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 在上一节我们讲述了迭代器模式,这节我们讲述的是组合模式,通常组合模式和迭代器模式共用才会达到比较好的效果,接下来我们还是拿上一节讲述的场景,在上个场景中,如果晚餐店的菜单中有甜点这个 阅读全文
posted @ 2017-03-09 16:38 哀&RT 阅读(183) 评论(0) 推荐(0)
摘要:迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上,这样就简化了聚合的接口,也让责任各得其所。 场景:有一家早餐店和一家晚餐店合并成一家餐厅,现对两个餐厅的菜单进行合并,两家菜单都一样,有name,decription,price 阅读全文
posted @ 2017-03-09 14:26 哀&RT 阅读(108) 评论(0) 推荐(0)
摘要:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 场景,对于咖啡来说,我们需要把水煮沸,然后用沸水冲泡咖啡,再把咖啡倒入杯子中,最后加入糖和牛奶,对于茶而言,也是先把水煮沸,用沸水去浸泡茶叶,在把茶倒入杯 阅读全文
posted @ 2017-03-07 19:52 哀&RT 阅读(193) 评论(0) 推荐(0)
摘要:外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 场景:有一个家庭影院,里面有爆米花机,投影,DVD机,音响等,然后等我们要开始享观赏电影的时候,我们不得不执行打开爆米花机,开始爆米,关闭爆米花机,关闭灯,放在投影....等等一系列操作,然后观 阅读全文
posted @ 2017-03-07 17:05 哀&RT 阅读(169) 评论(0) 推荐(0)
摘要:适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不见人的类可以合作无间。 在生活中,一个二插转换器就是一个适配器,本来不能将二插的插头插入三插插口,利用了这个转换器就可以实现,这个二插转换器在中间起到了一端连接插座,一端连接插头的作用。 场景:之前我们看过鸭子Duck类,现在 阅读全文
posted @ 2017-03-07 11:46 哀&RT 阅读(186) 评论(0) 推荐(0)
摘要:命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 下面我们利用一个场景来进行理解理解 场景:有一个遥控器,可以控制电灯、音响的开关,遥控器发出一个打开或关闭电灯或音响的请求,这个请求被我们封装成了命令对象。然后将命令对象传给接受者(即电灯 阅读全文
posted @ 2017-03-06 16:49 哀&RT 阅读(190) 评论(0) 推荐(0)
摘要:策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 说白了就是将客户和算法分离开来,下面客户就是Duck的具体类,算法就是封装好的飞行行为,呱呱叫行为。让我们直接看代码吧。 首先创建客户类Duck代码,具体实现类实现抽象类Duck 接着实现算法,即 阅读全文
posted @ 2017-03-06 15:17 哀&RT 阅读(127) 评论(0) 推荐(0)
摘要:装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。 现在,我们有一个场景,咖啡店出售各种不同的咖啡,而不同的咖啡中可以加入各种不同的调料,根据咖啡种类和加入的调料来计算价格。下面我们就用代码来简单实现下这个场景,也就是装饰者模式,其中咖啡为主体,调料是用来装饰咖啡 阅读全文
posted @ 2017-03-04 15:17 哀&RT 阅读(155) 评论(0) 推荐(0)
摘要:观察者模式:在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 在定义一对多的时候,我们把一称做主题,多称做观察者。下面我们直接看代码来简单了解观察者模式。 第一步:先创建一个主题接口,对象使用此接口来新增、删除、通知观察者。 第二步:创建一实现主题接口的实体类。 阅读全文
posted @ 2017-03-03 18:59 哀&RT 阅读(190) 评论(0) 推荐(0)
摘要:首先工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。下面分别介绍这三种模式。 注:在设计模式中,所谓的“实现一个接口”,并“不一定”表示写一个类,并利用implement来实现某个接口,而是泛指实现某个超类型(可以是接口或类)的某个方法。 一:简单工厂模式 简单工厂模式其实不是一个设计模 阅读全文
posted @ 2017-02-21 09:55 哀&RT 阅读(159) 评论(0) 推荐(0)
摘要:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,并提供一个全局访问点。 使用单例模式的目的在于尽可能节约内存空间,减少GC的消耗。 一个类能否成为单例,主要就是说这些类在应用中如果有两个以上实例会引起一定错误。 首先看下一 阅读全文
posted @ 2017-02-21 09:55 哀&RT 阅读(102) 评论(0) 推荐(0)
摘要:什么是设计模式,为什么我们要学习设计模式呢? 其实设计模式是在软件设计过程中,涉及的常用问题,以及解决这些问题的方案和核心内容。而这些方案和内容就构成了设计模式,它主要是为了让我们解决特地场景下的一系列问题。 下面在学习设计模式之前需要了解设计模式的一些原则,这里我罗列几点重要的规则,具体的使用会在 阅读全文
posted @ 2017-02-21 09:52 哀&RT 阅读(102) 评论(0) 推荐(0)