My Github
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 29 下一页
摘要: 在日常生活中,交通信号灯指挥者日益拥挤的城市交通。红灯亮,汽车停止;绿灯亮,汽车继续前行;在这个过程中,交通信号灯是汽车的观察目标,而汽车则是观察者。随着交通信号灯的变化,汽车的行为也会随之变化,一盏交通信号灯可以指挥多辆汽车。在软件系统中,有些对象之间也存在类似交通信号灯和汽车之间的关系,一个对象的状态或行为的变化将会导致其他对象的状态或者行为也发生改变,它们之间将产生联动,正所谓牵一发而动全身。为了更好地描述对象之间存在的这种一对多的联动,观察者模式应运而生。 阅读全文
posted @ 2017-07-27 00:22 EdisonZhou 阅读(3347) 评论(6) 推荐(7) 编辑
摘要: 相信大家都玩过类似于“斗地主”的纸牌游戏,某人出牌给他的下家,下家看看手中的牌,如果要不起,则将出牌请求转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新牌。在这个过程中,纸牌作为一个请求沿着一条链在传递,每一位纸牌的玩家都可以处理该请求。在设计模式中,也有一种专门用于处理这种请求链式的模式,它就是职责链模式。 阅读全文
posted @ 2017-07-23 23:36 EdisonZhou 阅读(2890) 评论(3) 推荐(14) 编辑
摘要: 最近开启了追剧模式,不知道什么时候开始追起家庭伦理类的电视剧,或许是年龄到了吧。这部剧仍然延续了近年来的趋势,以离婚为主旋律,讲述了一个做了10年全职太太,只知道买买买的上海小女人,从离婚后无依无靠无法生活到坚强独立重新做回自己的过程。 阅读全文
posted @ 2017-07-18 22:51 EdisonZhou 阅读(934) 评论(2) 推荐(0) 编辑
摘要: 所谓代购,简单说来就是找人帮忙购买所需要的商品。代购分为两种类型,一种是因为在当地买不到某件商品,又或者是因为当地这件商品的价格比其他地区的贵,因此托人在其他地区甚至国外购买该商品,然后通过快递发货或直接携带回来。另一种则是消费者对想要购买的商品相关信息的缺乏,自己无法确定其实际价值,因此只好委托中介讲价或购买。在软件开发中,有一种设计模式可以提供与代购类似的功能,由于某些原因,客户端不想或者不能直接访问某个对象,此时可以通过一个称之为“代理”的第三者来实现间接访问,该方案对应的设计模式则被称为代理模式。 阅读全文
posted @ 2017-07-17 23:38 EdisonZhou 阅读(2656) 评论(8) 推荐(8) 编辑
摘要: 现在在大力推行节约型社会,“浪费可耻,节俭光荣”。在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高。那么,是否存在一种技术可以用于节约内存使用空间,实现对这些相同或者相似对象的共享访问呢?答案是肯定的,这种技术就是享元模式。 阅读全文
posted @ 2017-07-11 00:17 EdisonZhou 阅读(2200) 评论(1) 推荐(8) 编辑
摘要: 在软件开发中,有时候为了完成一项较为复杂的功能,一个类需要和多个其他业务类交互,而这些需要交互的业务类经常会作为一个完整的整体出现,由于涉及的类比较多,导致使用时代码较为复杂,此时,特别需要一个类似服务员一样的角色,由他来负责和多个业务类进行交互,而使用这些业务类的类只需要和该类进行交互即可。外观模式通过引入一个新的外观类来实现该功能,外观类充当了软件系统中的“服务员”,它为多个业务类的调用提供了一个统一的入口,简化了类与类之间的交互。 阅读全文
posted @ 2017-07-06 23:14 EdisonZhou 阅读(2017) 评论(0) 推荐(10) 编辑
摘要: 想要学习设计模式,你得先会看类图,这里带你一张图读懂UML类图。本文非原创,而是转载自圣杰的简书,欢迎关注他。 阅读全文
posted @ 2017-07-03 16:38 EdisonZhou 阅读(5935) 评论(5) 推荐(14) 编辑
摘要: 虽然目前房价依旧很高,就连我所在的成都郊区(非中心城区)的房价均价都早已破万,但却还是阻挡不了大家对新房的渴望和买房的热情。如果大家买的是清水房,那么无疑还有一项艰巨的任务在等着大家,那就是装修。对新房的装修并没有改变房屋用于居住的本质,但它可以让房子变得更加漂亮和温馨以及更加实用。在软件设计中,也有一种类似于新房装修的技术可以对已有的功能进行扩展使之更加符合用户需求,从而使得对象具有更加强大的功能,这便是本次即将介绍的装饰模式。 阅读全文
posted @ 2017-07-02 17:57 EdisonZhou 阅读(2448) 评论(3) 推荐(6) 编辑
摘要: 树形结构在软件中随处可见,比如操作系统中的目录结构,公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题。组合模式通过一种巧妙的设计方案来使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含子节点的节点),本次我们就将学习一下用来处理树形结构的组合模式。 阅读全文
posted @ 2017-06-26 23:54 EdisonZhou 阅读(1984) 评论(0) 推荐(6) 编辑
摘要: 在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支。但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及的对象个数仅为3+12=15,远远小于36却能实现与36支蜡笔同样的功能。如果需要新增一种画笔,并且同样需要12种颜色,那么蜡笔需要增加12支,而毛笔却只需要新增1支。在软件系统中,有些类型由于自身的逻辑,它具有两个或多个维度的变化。为了解决这种多维度变化,又不引入复杂度,这就要使用今天介绍的Bridge桥接模式。 阅读全文
posted @ 2017-06-10 21:33 EdisonZhou 阅读(3244) 评论(3) 推荐(13) 编辑
摘要: 自从订阅了吴军老师的《硅谷来信》之后,对其中一篇介绍Google的目标管理方法OKR的文章记忆犹新。想到自己喜欢在每年年初的时候给自己定制一些规划,于是乎了解了一下OKR并重构了一下我的2017年计划,并借此机会进行一个年中(不是终)回顾,希望能有越来越多人使用OKR给自己设定目标规划,并努力去完成计划,当一年结束时看看自己完成的情况,会有不自觉地自豪感(前提是你得尽力去完成60%以上的情况下)。 阅读全文
posted @ 2017-06-07 22:10 EdisonZhou 阅读(2260) 评论(1) 推荐(4) 编辑
摘要: 在现实生活中,我们的笔记本电脑的工作电压大多数都是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够工作在220V的电压下工作?答案:引入一个电源适配器,俗称变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容。在软件开发中,有时候也会存在这种不兼容的情况,我们也可以像电源适配器一样引入一个称之为适配器的角色来协调这些存在不兼容的结构,这种设计方案即称之为适配器模式。 阅读全文
posted @ 2017-06-05 00:09 EdisonZhou 阅读(3165) 评论(0) 推荐(7) 编辑
摘要: 建造者模式又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。因为,没有人买车会只买一个方向盘或者轮胎,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件组成的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。 阅读全文
posted @ 2017-05-10 00:45 EdisonZhou 阅读(3673) 评论(3) 推荐(11) 编辑
摘要: 相信大多数的人都看过《西游记》,对孙悟空拔毛变出小猴子的故事情节应该都很熟悉。孙悟空可以用猴毛根据自己的形象复制出很多跟自己一模一样的小猴兵出来,其实在设计模式中也有一个类似的模式,我们可以通过一个原型对象来克隆出多个一模一样的对象,这个模式就是原型模式。原型模式的原理很简单,将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象克隆自己来实现创建过程。 阅读全文
posted @ 2017-05-06 00:17 EdisonZhou 阅读(7237) 评论(4) 推荐(13) 编辑
摘要: 上一篇的工厂方法模式引入了工厂等级结构,解决了在原来简单工厂模式中工厂类职责太重的原则,但是由于工厂方法模式的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,从而增加系统开销。那么,我们应该怎么来重构?似乎,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是本次将要学习的抽象工厂模式的基本思想。 阅读全文
posted @ 2017-04-30 00:57 EdisonZhou 阅读(5019) 评论(0) 推荐(16) 编辑
摘要: 上一篇的简单工厂模式虽然简单,但是存在一个很严重的问题:当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背开闭原则。如何实现新增新产品而不影响已有代码?工厂方法模式为此应运而生。工厂方法用于创建客户所需要的产品,还向客户隐藏了哪种具体产品类将被实例化这一细节。因此,用户只需要关心所需产品对应的工厂,无须关心创建细节。 阅读全文
posted @ 2017-04-13 00:25 EdisonZhou 阅读(4681) 评论(3) 推荐(19) 编辑
摘要: 工厂模式是最常用的一种创建型模式,通常所说的工厂模式一般是指工厂方法模式。本篇是是工厂方法模式的“小弟”,我们可以将其理解为工厂方法模式的预备知识,它不属于GoF 23种设计模式,但在软件开发中却也应用地比较频繁。简单工厂模式的优点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需的对象,而无需知道其中创建的细节。此外,工厂方法模式还有一位“大哥”—抽象工厂模式,会在后面进行介绍。 阅读全文
posted @ 2017-04-08 23:36 EdisonZhou 阅读(4339) 评论(4) 推荐(19) 编辑
摘要: 围城我是在3月份京东图书搞活动时,一起买入了一些书,这本书就在其中。哈哈,说来也是,中学阶段老师们就开始推荐各种必读书籍,自己那时却是不以为意。不过还好那时没看,不然也不会有太多感想,也许这也跟自己的经历有关。我一直觉得《围城》是一本需要多次阅读的书,因为不同的年纪读完会有不同的感受,因此,这次读完后,我希望我能在结婚(进城)后读一次,等我为人父时再读一次,或许会有一些不太一样的感受。 阅读全文
posted @ 2017-04-04 01:36 EdisonZhou 阅读(1858) 评论(0) 推荐(1) 编辑
摘要: 单例模式属于创建型模式的一种,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛。创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。每一个创建型模式都在视图回答3个问题:3W -> 创建什么(What)、由谁创建(Who)和何时创建(When)。本篇是创建型模式的第一篇,也是最简单的一个设计模式,虽然简单,但是其使用频率确是很高的。 阅读全文
posted @ 2017-03-25 23:16 EdisonZhou 阅读(12173) 评论(14) 推荐(46) 编辑
摘要: 数学之美记得几年前看完了《浪潮之巅》之后,便知道了吴军老师还有另外一本非常出名的著作《数学之美》,但是一直没有列入计划阅读。直到2016年我看完了《硅谷之谜》以及《智能时代》之后,便自己上网买了一本第二版的《数学之美》。正如李开复博士所说:“在我认识的顶尖研究员和工程师里,吴军博士是极少数具有强大叙事能力和对科技、信息领域的发展变化有很深的纵向洞察力,并能进行有效归纳总结的人之一。”,正是因为在前面基本书中我看到了吴军老师强大的“讲故事”的能力,他能用通俗易懂,深入浅出的语言将技术原理讲清楚,这就十分腻害了,在《数学之美》中他也再次展示了这一点。 阅读全文
posted @ 2017-03-20 00:53 EdisonZhou 阅读(23434) 评论(1) 推荐(4) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 29 下一页