设计模式
文章平均质量分 79
傻傻的笑TzT
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式:代理模式
代理模式:为另一个对象提供一个替身或占位符以访问这个对象。 在我们学习代理模式之前,我们先了解下代理模式中的三个角色。 抽象角色:声明真实对象和代理对象的共同接口。 代理角色:代理对象角色内部含有真实对象的引用,从而可以操作真实对象。 同时代理对象提供与真实对象相同的接口,以便任何时刻都能替代真实对象。并且代理对象可以在执行真实对象操作时,附加自己的操作。 ...原创 2018-03-19 10:37:15 · 217 阅读 · 0 评论 -
设计模式:状态模式
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 策略模式和状态模式时双胞胎,策略模式时围绕可以互换的算法来创建成功业务的。状态模式时通过改变对象内部的状态来帮助对象控制自己的行为。 下面我们看看状态模式的场景 场景1:有一个扭糖果机器,在投入1元硬币后,扭动曲柄,然后机器掉出一颗糖果。 先来看看场景,既然是状态模式,顾名思义,就是根据状态来划分,在这个过...原创 2018-03-19 10:37:04 · 184 阅读 · 0 评论 -
设计模式:组合模式
组合模式:允许你讲对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 在上一节我们讲述了迭代器模式,这节我们讲述的是组合模式,通常组合模式和迭代器模式共用才会达到比较好的效果,接下来我们还是拿上一节讲述的场景,在上个场景中,如果晚餐店的菜单中有甜点这个子餐单,旗下有自己的子菜单项,那么迭代器模式的作用就不怎么明显了,融合后的菜单就是树形结构的样子...原创 2018-03-19 10:36:54 · 215 阅读 · 0 评论 -
设计模式:迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上,这样就简化了聚合的接口,也让责任各得其所。 场景:有一家早餐店和一家晚餐店合并成一家餐厅,现对两个餐厅的菜单进行合并,两家菜单都一样,有name,decription,price,vegetarian属性,而早餐店的菜单是存放在List集合中,晚餐店的菜单存放在数组中,并且对...原创 2018-03-19 10:36:43 · 190 阅读 · 0 评论 -
设计模式:模板方法
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 场景,对于咖啡来说,我们需要把水煮沸,然后用沸水冲泡咖啡,再把咖啡倒入杯子中,最后加入糖和牛奶,对于茶而言,也是先把水煮沸,用沸水去浸泡茶叶,在把茶倒入杯子中,最后加上柠檬。我们可以看这两种方法其实都采用了相同算法,1:把水煮沸 2:用沸水泡咖啡或茶 ...原创 2018-03-19 10:36:30 · 216 阅读 · 0 评论 -
设计模式:外观模式
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 场景:有一个家庭影院,里面有爆米花机,投影,DVD机,音响等,然后等我们要开始享观赏电影的时候,我们不得不执行打开爆米花机,开始爆米,关闭爆米花机,关闭灯,放在投影....等等一系列操作,然后观赏完电影,还有在关闭这些东西,这多累人啊。这时候,我们就可以利用外观模式,提供一个合理的接口的外...原创 2018-03-16 17:24:28 · 231 阅读 · 0 评论 -
设计模式:适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不见人的类可以合作无间。 在生活中,一个二插转换器就是一个适配器,本来不能将二插的插头插入三插插口,利用了这个转换器就可以实现,这个二插转换器在中间起到了一端连接插座,一端连接插头的作用。 场景:之前我们看过鸭子Duck类,现在我们有个火鸡,让我们通过适配器把它伪装成鸭子。 首先创建鸭子和火鸡接口//鸭子接口publ...原创 2018-03-16 17:24:02 · 270 阅读 · 0 评论 -
设计模式:命令模式
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 下面我们利用一个场景来进行理解理解 场景:有一个遥控器,可以控制电灯、音响的开关,遥控器发出一个打开或关闭电灯或音响的请求,这个请求被我们封装成了命令对象。然后将命令对象传给接受者(即电灯或音响),接受者就可以执行命令了。 下面我们就来看看代码的实现。首先我们先创建几个装置类对...原创 2018-03-16 17:23:39 · 183 阅读 · 0 评论 -
设计模式:策略模式
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 说白了就是将客户和算法分离开来,下面客户就是Duck的具体类,算法就是封装好的飞行行为,呱呱叫行为。让我们直接看代码吧。 首先创建客户类Duck代码,具体实现类实现抽象类Duckpublic abstract class Duck { //声明飞行行为、呱呱叫行为的引用变量 ...原创 2018-03-16 17:23:08 · 195 阅读 · 0 评论 -
设计模式:装饰者模式
装饰者模式:动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。 现在,我们有一个场景,咖啡店出售各种不同的咖啡,而不同的咖啡中可以加入各种不同的调料,根据咖啡种类和加入的调料来计算价格。下面我们就用代码来简单实现下这个场景,也就是装饰者模式,其中咖啡为主体,调料是用来装饰咖啡的,比如想要一杯摩卡和奶泡的深焙咖啡,那么要做的是: 1:拿一个深焙咖啡DarkRoast对象...原创 2018-03-16 17:22:39 · 202 阅读 · 0 评论 -
设计模式:单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,并提供一个全局访问点。 使用单例模式的目的在于尽可能节约内存空间,减少GC的消耗。 一个类能否成为单例,主要就是说这些类在应用中如果有两个以上实例会引起一定错误。 首先看下一个最原始的单例模式public class Singleton { //一个静态的...原创 2018-03-16 17:20:57 · 174 阅读 · 0 评论 -
设计模式:观察者模式
观察者模式:在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 在定义一对多的时候,我们把一称做主题,多称做观察者。下面我们直接看代码来简单了解观察者模式。 第一步:先创建一个主题接口,对象使用此接口来新增、删除、通知观察者。//主题接口,用于添加、删除和通知观察者public interface Subject { //添加观察者 pub...原创 2018-03-16 17:21:42 · 173 阅读 · 0 评论 -
设计模式:工厂模式
首先工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。下面分别介绍这三种模式。 注:在设计模式中,所谓的“实现一个接口”,并“不一定”表示写一个类,并利用implement来实现某个接口,而是泛指实现某个超类型(可以是接口或类)的某个方法。一:简单工厂模式 简单工厂模式其实不是一个设计模式,反而更想是一种编程习惯。将可变的和不可变的分离出来。 简单工厂模式的实质是由一个工厂类根据传入...原创 2018-03-16 17:19:33 · 252 阅读 · 0 评论 -
设计模式:开篇
什么是设计模式,为什么我们要学习设计模式呢? 其实设计模式是在软件设计过程中,涉及的常用问题,以及解决这些问题的方案和核心内容。而这些方案和内容就构成了设计模式,它主要是为了让我们解决特地场景下的一系列问题。 下面在学习设计模式之前需要了解设计模式的一些原则,这里我罗列几点重要的规则,具体的使用会在后续各种设计模式中介绍。 设计原则: 1:找出应用中可能需要变化之处,把它...原创 2018-03-16 17:15:23 · 271 阅读 · 1 评论 -
设计模式:总结
首先这里先讲下复合模式的定义,复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题。具体场景和例子这里就不介绍了。 好了,现在让我们看下什么是模式。 模式:是在某情境下,针对某问题的某种解决方案。 情境就是应用某个模式的情况下,这应该是会不断出现的情况。 问题就是你想在某情境下达到的目标,但也可以是某情境下的约束 ...原创 2018-03-19 10:37:24 · 184 阅读 · 0 评论
分享