随笔分类 - 设计模式
摘要:一、引言 我们常常在会在字符串中搜索匹配字符或判断一个字符串是否符合我们要的格式时,使用正则表达式,可解决问题的背后是一种什么思想呢?即我们今天要学习的内容,解释器模式 二、解释器模式 定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子 1.文法:即
阅读全文
摘要:一、引言 上篇博文中我们分享了访问者模式,访问者模式是把作用于数据结构上的操作封装到访问者类中,使得数据结构与操作分离。今天我们要学习的备忘录模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应行为),而备忘录模式保存的是发起人的状态(状态对应数据内部结构,如属性)。下面请看
阅读全文
摘要:一、引言 上篇博客中与大家分享了责任链模式,责任链模式主要应用于系统中某个功能需要多个参与者完成的场景,今天将分享我对访问者模式的理解 二、访问者模式 定义:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作 下面是访问者模式结构图: 场景:人有男
阅读全文
摘要:一、引言 你在公司里请过假吗?员工向管理者发出请求,每个管理者都有可能接收到请求,将这些管理者串成一个链子,直到有处理这个请求为止。目前我们公司请假制度是:2天以内项目经理审批即可,3天以内项目总监参与审批,超过3天的休假必须经过总经理签字批准。这个常见的生活场景就用到了我们今天要学习的内容,责任链
阅读全文
摘要:一、引言 平时去商场买东西,会遇到各种各样的商场促销活动,例如:黄金会员打9折,铂金会员打8折,钻石会员打7折...通常的做法,定义一个算法类,我们根据会员类型,使用if-else判断获得不同的算法。这样的确解决了问题,但是哪天商场新增活动了,要买300返100,我们就需要去修改算法类了,违背了“开
阅读全文
摘要:一、引言 上篇博客中学习了中介者模式,我们留下了一个问题,当出现多个玩家需要输赢状态条件判断时,可不可以不去修改中介者类,因为如果每新增一个条件判断,就要修改中介者类,破坏了封装,违背开闭原则。今天我们学习的内容就是要解决这种业务场景,状态模式 二、状态模式 定义:当一个对象的内在状态改变时允许改变
阅读全文
摘要:一、引言 前两天休息日在网上打QQ斗地主,每盘结束后腾讯游戏平台会自动计算输赢的欢乐豆,嗯?挺好的,平时在面对面玩斗地主时,一盘游戏结束后,我们需要了解每个人的出牌状况,然后算出来输赢。现在有了游戏平台,玩家之间计算输赢这个操作交给了游戏平台,我们不再需要了解每个人的出牌状况。在软件设计中,我们将解
阅读全文
摘要:一、引言 相信猿友都大大小小经历过一些面试,其中有道经典题目,场景是猫咪叫了一声,老鼠跑了,主人被惊醒(设计有扩展性的可加分)。对于初学者来说,可能一脸懵逼,这啥跟啥啊是,其实博主当年也这感觉,O(∩_∩)O哈哈~好了,废话不多说,今天我们要学习的内容就是要解决这种业务场景——观察者模式,又叫发布-
阅读全文
摘要:一、引言 上篇博客中学习了命令模式,是将行为抽象为命令,使得行为请求者和接收者形成低耦合关系。我们知道行为型设计模式关注的是对象职责的分离,今天我们将学习一个新的设计模式,迭代器模式: 二、迭代器模式 定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部显示 下面是迭代器模式结构
阅读全文
摘要:一、引言 起初餐馆吃饭都是客人和厨师直接沟通,菜谱是一样的,可是客人多了的时候,有的客人可能有急事不吃了要退单,还有的客人点很多菜需要记录类别和次序等现象,这时服务员角色的出现解决了问题。那么面对某些无法抵御变化的“紧耦合”的场景如何做程序设计呢?命令模式设计便出现了,使得“行为请求者”与“行为实现
阅读全文
摘要:一、引言 说到模板,顾名思义:就是样板,整体架构已经有了,你只需要填充自己的特定内容就可以了。如:简历模板,论文模板,PPT模板等 在软件设计中,模板方法模式与之很相似,下面请看我们今天要学习的模板方法模式 二、模板方法模式 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子
阅读全文
摘要:一、引言 在系统开发过程中,大多会遇到跨网络做系统应用间数据对接问题,但目标对象不允许跨网络直接访问数据,通常考虑到网络和安全性能等因素,开发者会在客户端和目标对象间添加一层中间层--代理层,也是即将要介绍的代理模式(Proxy)。 二、代理模式介绍 在介绍代理模式前,我们首先看一下代理模式的分类
阅读全文
摘要:一、引言 在软件开发中,当我们需要重复使用某个对象时,如果重复使用new创建这个对象,内存就需要多次去申请内存空间,这样可能造成资源浪费甚至内存溢出等问题。。。下面请看我们我们今天学习的享元模式是如何解决这个问题的 二、享元模式的结构 借用下大话设计模式中的图,嘿嘿。。。 三、享元模式 定义:运用共
阅读全文
摘要:一、引言 每逢去吃午饭路上,几个同事都要讨论一番投资理财的事情,时间久之,小白的我才勉强了解到股票与基金的区别,股票是自身直接与某只股票交易,可以通过分红或者低买高卖获利(自身需要分析股市多只股票的行情,如图示一);而基金是把钱交给基金公司,有专业人员帮你分析股市或债券等帮你理财(自身不需要直接关注
阅读全文
摘要:一、引言 在软件开发中,我们经常会遇到处理简单对象和复合对象的情况,例如操作系统中文件目录的处理,目录可以包含单独的文件,也可以包括文件夹,而文件夹里又包含着文件,如此递归下去或者说是分级数据结构。由于简单对象和复合对象在功能上的区别,导致在操作过程中必须区分简单对象和复合对象,这样导致客户端调用时
阅读全文
摘要:一、引言 移动互联时代,手机的使用已经几乎普及到每个人,但是大家有没有想过为什么买的手机通常不会带有贴膜、保护壳?嗯,这个很容易理解,因为这些东西属于装饰手机的配件,买到的手机核心职责和行为已经实现了,至于想怎么装饰手机,有的人想给手机配个钥匙链挂着,有的人想给手机再加一层手机包装起来等等。面对这些
阅读全文
摘要:一、引言 最近朋友打算购置一台电脑,在考虑购买台式机还是组装机?但是台式机和组装机到底有什么区别呢?台式机由已经固定好硬件组成,我们可以是选择不同的牌子,具体设计类图如下 这样实现不同品牌的电脑都有自己的电脑组成实现,嗯?这样是不是挺好的,将电脑组装抽象出来,如果要加一个品牌为戴尔的电脑,只需要再写
阅读全文
摘要:一、引言 富兰克林揭秘了雷电的真实面目,那我们是否设想过将雷电储存下来呢?生活中如果买了国外的电器(美国、日本)使用电压为110V的,可国内通常电压是220V的,国外电器使用电压与国内电压不符,那怎么才能让它适用国内这个环境而正常使用呢?我们知道这时候需要用到电源适配器220V-110V,电器才能正
阅读全文
摘要:一、引言 相信大家都看过西游记中孙悟空拔一根汗毛吹出千万只猴子,可有没有想过如果这些猴子一只一只的去经历和孙悟空一样的成长过程才能产生,这是何其的复杂和耗费精力啊?!类比在程序设计中,当需要创建多个相同的类的实例,这个创建过程又是极其复杂时,使用new操作符一个个去创建会增加内存开销和程序复杂度。显
阅读全文
摘要:一、引言 父母希望孩子们受到良好的教育,但孩子的培养是很复杂的,从认字,写字,颂词,到语数外理化生音体美的培养等等,如果让父母一个个这样培养孩子是很不容易的,这个时候就出现了学校,学校封装了孩子每一步的培养要做的事情,父母只需要把孩子送到学校,学校负责把培养好的孩子交换给父母。啊。。。这个例子就做抛
阅读全文
浙公网安备 33010602011771号