摘要: 定义 一.状态模式的定义:状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。 二.状态模式的意图:允许一个对象在其内部状态改变时改变它的行为。 模拟场景 模拟交通灯指示灯 两个角色 上下文环境(Context 阅读全文
posted @ 2020-09-08 15:45 一叶青城 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 定义 观察者模式 描述了 一种 一对多的关系。 当某一对象的状态发生改变时,其他对象会得到 改变的通知。并作出相应的反应。 模拟场景 猫叫了一声,随后引起一连串的动作,老鼠跑了,主人醒了,小孩儿哭了 两个角色 抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何 阅读全文
posted @ 2020-09-07 13:43 一叶青城 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以把该对象恢复到原先的状态。 模拟场景 手机联系人备份功能 三个角色 发起人角色:记录当前时刻的内部状态,负责创建和恢复备忘录数据。这里就是手机联系人列表对象 备忘录角色:负责存储发起人对象的内部状态,在进行 阅读全文
posted @ 2020-09-06 11:33 一叶青城 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 定义 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能将请求传递给链上的下一个对象。 模拟场景 公司请假审批流程: 如果请假天数小于3天,项目经理审批 如果请假天数大于等于3天,小于10天,部门经理审批 如果请假天数大于等于 阅读全文
posted @ 2020-09-04 22:32 一叶青城 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 模板方法应该是比较常见的设计模式之一,这里用一个场景(23种设计模式就是用来解决不同场景的方法)来说明什么是模板方法。假设有这样一个场景,通过手机去查询我们自己的账户,银行会发送一个短信返回给用户,而用户角色有普通用户/vip用用户或者叫做定期/活期用户,根据角色不同,短信内容和利息计算方式都不一样 阅读全文
posted @ 2020-09-04 12:34 一叶青城 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 解释器模式提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被广泛地应用在 SQL 解析、符号处理引擎等领域。解释器模式在实际的应用开发中运用的场景是比较少的,这里通过一个的例子简单用代码实现一下解释器模式。 /// <summary> /// 定 阅读全文
posted @ 2020-08-31 23:31 一叶青城 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 什么是代理,在现实生活中,我们去买火车票,可以到各个地方的火车票代售点去购买,而不用到火车站去,代售点本身只需要引用火车站的业务就拥有了售票功能。 在软件的设计中,我们可以也可以通过一个代理类来实现真实业务方法。代码实现如下: /// <summary> /// 真实业务类 /// </summar 阅读全文
posted @ 2020-08-26 19:14 一叶青城 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 什么是门面模式(facade pattern)? 举个生活中的例子,我门去肯德基买汉堡套餐,只要去找柜台的工作人员点个餐就可以了,然后由后台工作人员给我们配餐,而不是需要我们自己去厨房自己去拿各种东西。那么柜台就相当于是充当了门面的角色。至于汉堡,鸡腿是怎么来的,我们不用关心。 在程序开发中门面模式 阅读全文
posted @ 2020-08-24 17:21 一叶青城 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 学习装饰器模式,我们就该知道什么叫做装饰,就是对一个主体单位进行修饰,拿现实生活中的房子举例,开发商把房子交给客户之后,客户要对房子按照自己的风格进行装修。 下面我们用程序代码来描述,我们可以创建两种房子住房(House)和公寓(Falts),让他们继承父类(Bulding)。代码如下: /// < 阅读全文
posted @ 2020-08-24 13:19 一叶青城 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 什么是适配器? 适配器是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等。 在软件程序中,适配器模式就是要让一个接口变成我们想要的接口,使得原本不兼容的类型可以一起使用。举例说 阅读全文
posted @ 2020-08-23 19:29 一叶青城 阅读(137) 评论(0) 推荐(0) 编辑