如何让孩子爱上设计模式
谈到设计模式,很多童鞋都会头疼,本专栏希望通过简单的有趣的例子以及示例代码,帮你快速了解掌握各种设计模式。
coder-pig
世界不会因为你的疲惫,而停下它的脚步;时间一天天过去,我们终会因我们的努力或堕落变得丰富或苍白
展开
-
如何让孩子爱上设计模式 ——20.解释器模式(Interpreter Pattern)
如何让孩子爱上设计模式 ——20.解释器模式(Interpreter Pattern)标签: 设计模式初涉描述性文字解释器模式是一个用的比较少的设计模式,而且不太好理解,先说下概念相关的东西 再写个代码示例帮助下理解:定义给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个 解释器,客户端可以使用这个解释器来解释这个语言中的句子。四个角色AbstractExpression:原创 2017-03-20 11:47:47 · 179977 阅读 · 2 评论 -
如何让孩子爱上设计模式 ——21.访问者模式(Visitor Pattern)
如何让孩子爱上设计模式 ——21.访问者模式(Visitor Pattern)标签: 设计模式初涉描述性文字本节讲解的访问者模式相比起上一节的解释器模式显得稍微易懂一些, 核心其实就是:数据结构不变,操作可变,结构与操作解耦的一种模式。 同样是先走一波概念,然后写个简单的代码示例帮助理解。概念相关定义封装一些作用域某种数据结构中的个元素的操作,在不改变这个数据结构的 前提下,定义作用于这些元素原创 2017-03-20 14:50:24 · 178445 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——22.责任链模式(Chain of Responsibility Pattern)
如何让孩子爱上设计模式 ——22.责任链模式(Chain of Responsibility Pattern)标签: 设计模式初涉描述性文字定义使多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。两个角色Handler:抽象处理者,定义抽象请求处理方法,还定义一个抽象处理者对象作为 其下家的引用,通过原创 2017-03-21 01:13:43 · 179325 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——23.状态模式(State Pattern)
如何让孩子爱上设计模式 ——23.状态模式(State Pattern)标签: 设计模式初涉描述性文字分离状态,选择实现定义当一个对象的内在状态发生改变时允许改变其行为,这个对象看起来像是改变了它的类三个角色Context:上下文环境,定义客户感兴趣的接口,维护一个State子类的实例,该实例定义了对象的当前状态State:抽象状态,定义一个接口以封装与 Context 的一个特定状态相关的行为原创 2017-03-21 12:17:31 · 179493 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——24.模板方法模式(Template Method Pattern)
如何让孩子爱上设计模式 ——24.模板方法模式(Template Method Pattern)标签: 设计模式初涉描述性文字终于来到23种设计模式的最后一种:模板方法模式,听名字感觉好像很复杂的样子, 实则不然,先不讲概念,先写个简单的例子,通过例子来感受这个模式。代码示例既然是最后一节的了,还是要走一波回忆杀的,还记得之前小猪奶茶店的例子吗? 在工厂方法模式那一章,我们写了奶茶的制作过程过程原创 2017-03-21 16:05:16 · 179800 阅读 · 0 评论 -
如何让孩子爱上设计模式 —— 1.面向对象相关概述
快速过一过设计模式 —— 1.面向对象相关概述标签: 设计模式初涉描述性文字:如题,快速过一过设计模式,本节过的是面向对象相关概述,包括 面向对象的三大特性,类与类的六大关系和面向对象的七大基本原则, 没有冗烦的代码,只是纯粹概念理解而已,设计模式这种东西,不是 三言两语或者看一两本书就能学会的,需要日积月累,观摩别人代码, 自己写代码,思考,会在合适的场景使用合适的设计模式才是硬道理。原创 2017-01-13 17:37:14 · 180207 阅读 · 9 评论 -
如何让孩子爱上设计模式 —— 2.单例模式(Singleton Pattern)
快速过一过设计模式 —— 2.单例模式(Singleton Pattern)标签: 设计模式初涉描述性文字:有23种不同的设计模式,分为三大类: 创建型(5种) 结构型(7种) 行为型(11种) 单例 适配器 策略 建造者 装饰者 观察者 原型 组合 迭代器 工厂方法 桥接 命令 抽象工厂 外观 备忘录 享元 中介者原创 2017-01-13 20:47:11 · 179885 阅读 · 4 评论 -
如何让孩子爱上设计模式 —— 3.建造者模式(Builder Pattern)
快速过一过设计模式 —— 3.建造者模式(Builder Pattern)标签: 设计模式初涉应用场景将复杂对象的构建与它的表示分离开来,使得同样的构建过程可以 创建不同的表示。举个简单例子:自定义游戏角色时,游戏角色由: 性别,脸部,衣服三个部分组成,我们根据自己的喜好进行选择, 最终胜出一个自定义的角色,不同的组成部分,最后生成的角色 也不一样。组成部分(四个角色) Produ原创 2017-01-16 17:19:51 · 179232 阅读 · 3 评论 -
如何让孩子爱上设计模式 —— 4.原型模式(Prototype Pattern)
快速过一过设计模式 —— 4.原型模式(Prototype Pattern)标签: 设计模式初涉使用场景简单点说就是克隆对象!适用场景如下:1.当初始化类对象需要消耗非常多资源,或者说要进行繁琐 的数据准备或者权限,如果想简化创建,可以使用原型模式。2.一个对象提供给其他对象访问,而各个调用者可能都需要 修改对象的值,可以考虑使用原型模式克隆多个对象供调用者 使用(保护性拷贝)组成部分(原创 2017-01-17 14:48:38 · 180037 阅读 · 1 评论 -
如何让孩子爱上设计模式 —— 5.工厂方法模式(Factory Method Pattern)
快速过一过设计模式 —— 5.工厂方法模式(Factory Method Pattern)标签: 设计模式初涉描述性文字举个小猪卖奶茶的简单例子,引入简单工厂模式,再引入工厂方法模式。1.新店开张,亲力亲为卖奶茶,品种有很多,什么珍珠奶茶,椰果奶茶,黑冰钻奶茶等, 制作方法差不多,我们简化下流程咯:加奶,加茶,加料,打包, 假定是这四步,就加料的环节不一样,然后抽象出一个奶茶父类:接着继承奶茶父原创 2017-01-18 15:51:46 · 177852 阅读 · 0 评论 -
如何让孩子爱上设计模式 —— 6.抽象工厂模式(Abstract Factory Pattern)
如何让孩子爱上设计模式 —— 6.抽象工厂模式(Abstract Factory Pattern)标签: 设计模式初涉描述性文字上节通过小猪开奶茶店的例子引入了简单工厂模式与工厂方法模式, 本节我们来继续通过这个例子引出抽象工厂模式!小猪的奶茶店开 了也有一段时间了,吃货们对奶茶都很满意,更多的反馈是太单调 如果能搭配其他的小吃,比如手抓饼,咖喱鱼蛋啥的就更好了, 小猪通过自学学会了很多小吃原创 2017-01-19 11:51:26 · 177813 阅读 · 0 评论 -
如何让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)
如何让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)标签: 设计模式初涉概念相关定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。简单点说:两个彼此间没有太大关联的类,想进行交互完成某些事情,如果 直接去修改各自的接口,就显得有些繁琐了,可以加个中间类, 用它来协调两类之间的关系,完成相关业务原创 2017-01-20 21:03:40 · 179189 阅读 · 4 评论 -
如何让孩子爱上设计模式 ——8.装饰者模式(Decorator Pattern)
如何让孩子爱上设计模式 ——8.装饰者模式(Decorator Pattern)标签: 设计模式初涉描述性文字还记得工厂方法模式小猪开的奶茶店吗?在那一节中讲解的是 通过工厂方法模式来做奶茶,做奶茶的工作都已经交给小弟了, 小猪的工作量少了很多,剩下的就是敲起二郎腿坐着收钱了, 于是乎列了一张单子,写出所有饮品的价格: 奶茶: 原味奶茶:5块 珍珠奶茶:7块 椰果奶原创 2017-01-21 18:40:57 · 179359 阅读 · 3 评论 -
如何让孩子爱上设计模式 ——9.组合模式(Composite Pattern)
如何让孩子爱上设计模式 ——9.组合模式(Composite Pattern)标签: 设计模式初涉描述性文字组合模式,又称为 部分整体模式,把具有相似的一组对象 当做一个对象处理,用一种树状的结构来组合对象,再提供统一 的方法去访问相似的对象,以此忽略掉对象与对象容器间的差别。举个简单例子,菜单和菜品,同样是以小猪的奶茶店为例子:假设这两类需求如下:菜单:菜单名,描述信息,添加,添加删除子菜单或原创 2017-01-25 19:06:54 · 179317 阅读 · 2 评论 -
如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern)
如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern) 我有故事,你有酒吗?这年头写个技术文不讲个故事都不行,行,我讲; 还有发现很多的技术博文都开始有喜欢往文中插入几个表情的趋势了, 但是你真的插的姿势对了吗?这种事情不是随便插的,来来来,给你 见识下如何在适当的场景插入适当的表情以让读者感觉到易可赛艇, 本文以讲故事插表情为主,讲述桥接模式为辅,多图预警, 简书上排版可能有些问题,最原创 2017-02-06 00:36:22 · 180424 阅读 · 4 评论 -
如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)
如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)标签: 设计模式初涉场景引入相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧: 分别是瑞雯和盲僧,这两个英雄都可以通过组合键的方式打出爆炸性伤害, 打出这套组合键除了需要较快的手速外,还需要记住键位顺序,对应技能: 瑞雯的光速QA:Q + 空格 + A + 鼠标左键 + Q + 空格 + A +原创 2017-02-12 17:55:41 · 179143 阅读 · 6 评论 -
如何让孩子爱上设计模式 ——12.享元模式(Flyweight Pattern)
如何让孩子爱上设计模式 ——12.享元模式(Flyweight Pattern)标签: 设计模式初涉场景引入有时在开发中,可能我们需要创建大量的相同的重复对象,比如游戏开发中, 场景贴图的,一个森林的场景,要有有成千上万的树,如果为每棵树都实例化 不同的模型,估计会把你电脑给炸了。使用享元模式可以解决这个问题, 抽取出所有树对象的共有属性,并转移到一个单独的类中,然后只需要 一个示例就可以了原创 2017-02-27 16:30:13 · 179380 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——13.代理模式(Proxy Pattern)
如何让孩子爱上设计模式 ——13.代理模式(Proxy Pattern)标签: 设计模式初涉描述性文字本节讲解的是7种结构型设计模式的最后一种:代理模式,看名字以为 很高端难用,其实不然,简单点说就是:引用代理对象对象的方式来访问目标对象举个例子帮助理解下代理模式:小猪的老爸是卖鞋的 以前:以前拿货都要自己叫个小货车,然后去广州,接着采购,接着又把车开回来。 现在:现在有代理商这种东西,老爸只原创 2017-03-03 13:34:49 · 179558 阅读 · 1 评论 -
如何让孩子爱上设计模式 ——14.策略模式(Strategy Pattern)
如何让孩子爱上设计模式 ——14.策略模式(Strategy Pattern)标签: 设计模式初涉描述性文字本节讲解的是行为型设计模式中的第一个模式: 策略模式, 这个模式非常简单,也很好理解。 定义一系列的算法,把每个算法封装起来,并使得他们可以相互替换, 让算法独立于使用它的客户而变化。 一般用来替换if-else,个人感觉是面向过程与面向对象思想的 过渡,这里举个简易计算器的栗子,帮原创 2017-03-06 12:40:27 · 181240 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——15.观察者模式(Observer Pattern)
如何让孩子爱上设计模式 ——15.观察者模式(Observer Pattern)标签: 设计模式初涉描述性文字本节讲述的是:观察者模式(Observer Pattern),如果你用过RxJava,相信你对 这个模式应该不会陌生,当然,RxJava是扩展的观察者模式,这里不做了解,只 讲解最简单的观察者模式,首先是使用场景,举个最简单的例子,你放学到家, 很饿,这个时候你妈在厨房做饭,因为你和妈原创 2017-03-07 14:15:51 · 178763 阅读 · 1 评论 -
如何让孩子爱上设计模式 ——16.迭代器模式(Iterator Pattern)
如何让孩子爱上设计模式 ——16.迭代器模式(Iterator Pattern)标签: 设计模式初涉描述性文字本节讲解的是:迭代器模式(Iterator Pattern),说到迭代器,如果你学过Java集合, 相信你对于集合迭代器 Iterator 并不会陌生,比如,遍历一个集合:Iterator iterator = list.iterator();while(iterator.hasNext原创 2017-03-10 11:57:02 · 177206 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——17.命令模式(Command Pattern)
如何让孩子爱上设计模式 ——17.命令模式(Command Pattern)标签: 设计模式初涉描述性文字本节讲解的是行为型设计模式种的:命令模式,该模式非常简单, 就是用于行为请求者与行为实现者的解耦,举个简单的例子, 摆地摊与开店的流程:(例子参考自大话设计模式)摆地摊: 顾客 –点餐-> 老板 –收到点餐指令-> 制作菜肴 写成代码的话:就是顾客中持有对老板的引用,然后执行指令的时候原创 2017-03-13 14:39:33 · 178277 阅读 · 0 评论 -
如何让孩子爱上设计模式 ——18.备忘录模式(Memento Pattern)
如何让孩子爱上设计模式 ——18.备忘录模式(Memento Pattern)标签: 设计模式初涉描述性文字本节讲解的是行为型设计模式种的:备忘录模式(Memento Pattern),说到这个模式 想起以前用GBA玩宠物小精灵绿宝石的抓裂空座的时候,虽然有大师球,但是基本都 会想着用其他精灵球把神兽抓住,毕竟大师球没得卖,所以会在在打之前存档, 然后开始捕捉,打残血,各种丢球,很多时候丢到裂原创 2017-03-15 12:06:27 · 179467 阅读 · 1 评论 -
如何让孩子爱上设计模式 ——19.中介者模式(Mediator Pattern)
如何让孩子爱上设计模式 ——19.中介者模式(Mediator Pattern)标签: 设计模式初涉描述性文字本节讲述的是行为型结构模式中的—— 中介者模式(Mediator Pattern),说到中介这个词, 相信大家都不会陌生,特别是房产中介,房东把房子信息告知房产中介,房客通过房产中介 获取租房信息,毕竟大家都有自己的事要忙,房东和房客不用直接接触,通过房产中介即可 完成交互,一种里类似原创 2017-03-15 17:15:24 · 177717 阅读 · 0 评论