
设计模式
小慧哥
先立志成为海贼王里的派大星
展开
-
设计模式 迭代器模式(Iterator)
迭代器 在各种语言中 都有封装好的迭代器集合 比如c# list 迭代器图 举例子 电视和遥控器 电视如果没有遥控器 需要去电视控制面板 一个一个的换台 有遥控器就可以 在遥控器里直接按键 用来很方便 很解耦 Iterator 一个实体类 集合需要的对象 俩个接口 一个是集合对象接口 包含创建操作集合方法接口对象方法 和返回集合对象方法 一个是操作集合方法接口...原创 2019-11-27 22:36:02 · 155 阅读 · 0 评论 -
设计模式 桥接模式( bridge )
在桥接模式 这一片发现总是百思不得其解 道理都懂 但是总是也想不通 今天发现 我总是想着在那些功能上用到这个模式 而不是想这个模式带来的思想 所以总是想的很杂 现在跳出来这后 有点恍然大悟之感 它们都是设计模式 用来做凝定现实 的工具 不要具体到功能 桥接模式 用来对应 多维度的变化 实现抽象与实现分离 打个比方 如果写一个log日志 有数据库记录 有文本记录 但是这个日...原创 2019-11-27 21:08:45 · 174 阅读 · 0 评论 -
设计模式 状态模式
解决 对象发生变化时 其所能做的操作也会发生变化 酒店房间定房系统 房间状态 如果空闲的时候可以 预定房间 也可以入住 这样的判断 会让代码有很多的逻辑 state模式代码实现订房系统 public abstract class abState { public abstract string getState(); ...原创 2019-11-27 19:50:27 · 273 阅读 · 0 评论 -
设计模式 命令模式 Command
命令模式 把 行为请求者 与行为实现者 解耦 现实例子 我们生活里 老师委派学委来收作业 我们来实现这个代码的时候 可能会是在老师类里 new 一个学委 来实现他收作业的方法 但是如果 学委不在老师要指派别的学生来收作业 这就要改动代码 我们也不能把 这个临时的学生 new 成学委 或者职务发生变化 成为临时学委 万能遥控器 与多台电视 我只发送命令 是谁来接受 万能遥控器不用去考虑...原创 2019-11-27 14:33:59 · 212 阅读 · 0 评论 -
设计模式 装饰模式(decorate)
装饰器模式 装饰器模式 个人感觉也很常用 在项目中如果一个实体功能需要不断的丰富 就需要装饰器 比如一个奥迪系列的汽车 有A4 A1 A6 再买的时候 就喜欢选择很多配件 比如 GPS 倒车影像 等等 在不同的型号里 配置不同的装配 最后在生成总价 这种功能怎么办? 要是我的话 第一反应就是 俩个抽象 一个是汽车 一个是配件 汽车抽象里面有一个集合 然后用方法来控制 配件的增...原创 2019-11-22 21:47:47 · 258 阅读 · 0 评论 -
设计模式 组合模式(composite)
组合模式多用于 树形菜单 是抽象的活用(abstract) 比如 用代码怎么实现一个树形菜单 这样写代码 代码已经固化了 Doc和file 如果需要加另一个实体到树形菜单里 这个就扩展不开 我们看一下组合模式的设计图 那么 来实现一个可以扩展的树形菜单 首先来一个abstract Class 这样只要是节点 继承了 这个抽象类 都可以加入到 树形节点中...原创 2019-11-21 22:36:52 · 245 阅读 · 0 评论 -
设计模式 适配器模式(adapter)
适配器模式 这个很有用呀 主要实现已有功能 对接新功能上 或者升级某个模块 什么事适配器 咱们的生活中 手机充电器 还有电脑的显示连接机箱的线 等等 都是适配器 adapter 适配器分为 类适配器 和对象适配器 平常开发推荐使用对象适配器 一些语言不支持 多继承 举例子 游戏都有坐骑 如果这个坐骑是一只deer 现在老板说 这只鹿充钱后要飞起来 怎么办? 当然了 也可...原创 2019-11-21 20:15:26 · 199 阅读 · 0 评论 -
设计模式 策略模式
案例背景 如果一个项目需求 游戏设计 一个武士 可以使用的武器 有 刀 枪 弓箭 并且可以随时切换使用 那么我们这个程序要怎么写? 我们可以写成这样 这个代码也能实现功能 但是如果我们要增加 斧头怎么办? 或者 枪不符合武士的身份要被去除掉 是不是就要修改代码 这违反了 类的开闭原则 public class warrior { public warrior()...原创 2019-11-10 19:19:42 · 99 阅读 · 0 评论 -
设计模式 观察者模式
观察者 又叫 发布订阅模式 俩个角色 观察者 被观察者 当观察者被改变 观察者会观察到变化并相应 首先用时序图 来说明一下 观察者实现流程 首先 观察者要把自己 注册到被观察者中 container(容器) 比如 array arraylist list集合 等等 第二步 subject 被观察者如果出现修改变化 会在容器里 循环 并一个一个通知观察者 第三可...原创 2019-11-20 22:54:27 · 112 阅读 · 0 评论 -
设计模式 好的设计原则
1)单一职责原则 类的职责要单一 不能将太多的职责放在一个类里 2)开闭原则 软件实体对扩展是开放的 但对修改是关闭的 在不修改一个软件实体的基础上去扩展功能 3)里氏替换原则 在软件系统中 一个可以接受基类对象的地方必须可以接受一个子类对象 4)依赖倒转原则 要针对抽象层变成 不要针对具体类编程 5)接口隔离原则 使用多个专门的接口来取代一个统一接口 6)合成复用原则 ...原创 2019-11-10 17:18:39 · 92 阅读 · 0 评论 -
设计模式 单例模式
单例模式 解决类的独生子女问题 比如我们项目里可定有一种对象 需要只能实例化一次 比如打印机操作类 如果多次实例化出多个打印机操作对象 会造成处理混乱 还有一个登陆程序 在用户登录的时候需要记录当前用户信息 等 那么怎么来写这个类那? 1) 要把构造函数私有化 防止多次实例化 2)创建static 实体类 (在对象中如果创建了一个静态属性 比如一个static string ss...原创 2019-11-10 16:38:55 · 103 阅读 · 0 评论