设计模式
mgsky1
这个作者很懒,什么都没留下…
展开
-
面向对象设计模式之---备忘录模式(Memento Pattern)
今天要向大家介绍的模式是备忘录模式,有时又称作快照模式。这个备忘录模式一个典型的应用场景就是游戏存档。有时候为了打Boss,没有成功,反而被Boss打死了,这个时候就需要利用我们之前的存档回到最接近Boss的那一关再继续。备忘录模式的定义如下: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。——《大话设计模式》从这个定义原创 2018-04-15 23:26:14 · 676 阅读 · 0 评论 -
面向对象设计模式之---观察者模式(Observer Pattern)
今天更新的设计模式是观察者模式。刚才稍微去看了一眼Web前端开发,很炫!很炫!对于这个观察者模式,我就直接开门见山地直接放出定义和UML类图,后面再解释。观察者模式的定义如下: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 ——《大话设计模式》UML类图如下: 首...原创 2018-03-29 10:28:21 · 428 阅读 · 0 评论 -
面向对象设计模式之---单例模式(Singleton Pattern)
我们知道类可以用来实例化对象,而对象可以被实例化多个,但是有些时候我们并不想实例化多个对象,只希望只有一个,例如做一个窗体应用程序,有一个按钮,点击一下可以出现菜单,再点击一下就不会弹出同样的一个菜单,比如Word中我们多次点击替换按钮的时候只会出现一个窗口。这样的只允许出现一个实体的设计模式,被形象地称为单例模式,单例即单个实例。单例模式的定义如下: 保证一个类仅有一个实例,...原创 2018-04-03 18:37:32 · 2862 阅读 · 1 评论 -
面向对象设计模式之---简易工厂模式(Simple Factory Pattern)
今天有幸拜读了以下大鸟的《大话设计模式》,刷新了我的编程三观,发现如果写代码只为了实现功能,那也太low了,编程就是一门艺术。工厂模式是一个最简单的模式,它的主要功能是根据需要创建合适的对象。例如:有一天我口渴了想吃水果,到了水果店,跟里面的店员说:”我想吃苹果。“ 店员就拿出来一个苹果给我。这个水果店就像一个工厂,我想要什么,店员就拿给我什么。工厂模式的UML类图如下,以上面...原创 2018-02-24 12:05:20 · 416 阅读 · 0 评论 -
面向对象设计模式之---代理模式(Proxy Pattern)
好久都没有写文章了呢,最近比较忙,一个是课业比较忙,还有一个打算要进修,在准备考试。这几天老师要求做一个记事本(Android课的作业),需要使用到SQLite数据库,肯定很自然的想到数据的增删改查。在以往的项目中,自己都挺随性的,把真正的查询逻辑和其它一些功能写在一起,这样的结果就是导致维护起来很难。刚好最近学校要求我把我的作品申请专利,申请专利需要找一个专利的代理商,然后再由代理商来找...原创 2017-04-02 11:31:55 · 635 阅读 · 0 评论 -
面向对象设计模式之---策略模式(Strategy Pattern)
策略模式与简易工厂模式是非常相似的。最主要的区别是在功能上,简易工厂模式是为了产出对象,而策略模式是针对一族可替换的算法的。例如商场的打折,有时候打8折,有时候又有满减的活动。在这个场景下,我们更关心的是我们的折后价是多少,涉及到打折算法的问题,而不是在简易工厂模式中的水果对象,因此,在这种关心可替换算法的场景下,使用策略模式是合适的。策略模式的UML类图如下(PS.图片来自百度百科):...原创 2018-03-04 19:03:51 · 590 阅读 · 0 评论 -
面向对象设计模式之---原型模式(Prototype Pattern)
原型模式的定义是: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个概念看上去很抽象,其实质就是我们在编程中经常用到的对象复制,然后我们不免又要提到一个老生常谈的话题浅复制与深复制。先看一下原型模式的UML类图吧:其中,Prototype是一个原型的抽象类或借口,它里面有一个共有方法,叫clone。ConcretePrototype1与Concrete...原创 2018-03-08 20:06:00 · 936 阅读 · 0 评论 -
面向对象设计模式之---模板方法模式(Template Method Pattern)
这几天遇到了一些事,生活中有太多的不确定性,我所能做的就是做最好的自己。争取能把这本《大话设计模式》的读书笔记做完吧,说真的虽然现在只是Cover到知识点,还并没有实战,不过我想这就是一种积累。就像之前刚阅读完的《深入浅出MySQL》高级部分一样,虽然蛮多还是看不懂,毕竟我不是专业DBA,也没那么多经验。但是知道有这个东西,以后如果遇到了知道该去哪里查,我觉得这也是好的。今天要介绍的设...原创 2018-03-25 21:01:54 · 352 阅读 · 0 评论 -
面向对象设计模式之---装饰模式(Decorator Pattern)
装饰模式给我的感觉就有点像一个人穿衣服,或者从更专业一点的角度来说,有点像Java中文件读取时管道要套上一层又一层的“衣服”一样。这是一个链式的过程。装饰模式的定义是: 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式的UML类图如下: Componet是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteCompo...原创 2018-03-26 11:03:12 · 364 阅读 · 0 评论 -
面向对象设计模式之---外观模式(Facade Pattern)
今天要向大家介绍的设计模式是外观模式。外观模式,听上去好像很高大上的样子,其实是非常简单的。在《大话设计模式》 这本书中举的是股票与基金的例子。我又不炒股,对这些也不太敏感,于是就换一个更加通俗易懂的例子来解释一下这个模式吧~比如我们买了一张新的手机卡后都需要办理一些业务。但是,在运营商提供的众多业务中寻找最适合自己的难免有些困难。这时,我们就会去请教营业厅的客户服务经理,把自己的需求告诉...原创 2018-03-27 10:31:01 · 474 阅读 · 0 评论 -
面向对象设计模式之---建造者模式(Builder Pattern)
进入正题咯,今天要介绍的是建造者模式。可以想象一下这样一个场景:工厂要组装人偶的过程,以前是全手工的,难免会出现缺胳膊少腿的情况,现在都是机器流水线,这个问题就避免了。再比如我们经常见到的KFC和金拱门,它们的味道在全世界都是一样的,但是如果我们去一些小餐馆吃饭,每一次去的味道多多少少会有些不同。原因在哪里呢?原因就在与洋快餐把所有的工序都进行了严格的控制,这样生产出来的产品都是一个模子刻出来的;...原创 2018-03-28 09:10:17 · 313 阅读 · 2 评论 -
面向对象设计模式之---组合模式(Composite Pattern)
组合模式的应用场景主要是有树形结构出现的,例如在《大话设计模式》这本书中提出的这种场景:如上图,有某一个大公司,总部在北京,在上海设有分公司,又在南京和杭州设有办事处,每一个地方都有人力资源部和财务部两个部门。现在在北京总部使用着一套OA系统,高层觉得这套系统不错,要推广给下属公司,于是就给OA软件的设计厂商提出了要求。如果程序要一级一级判断这是总公司、分公司还是办事处就太麻烦了,要是...原创 2018-04-22 09:15:16 · 806 阅读 · 0 评论