随笔分类 - 设计模式
如何使用设计模式提高程序的灵活性,易维护,易复用
摘要:代理模式: 类 代理类 UI 缓存代理, 封装一个第三方缓存, 在代理里面进行缓存操作 提升性能 性能提升 优先考虑缓存单例代理: 代理类里面做好单例异常代理:代理类里面做好异常控制延迟代理:队列 前端延迟加载 一切可以推迟的东西晚点再做 按需加载 类初始化的时候为空,在方法执行的时候再去实例化权限
阅读全文
摘要:享元模式: 把对象相同的属性归于一个类,其他不同属性通过外部类传递进来, 减少对象的重复创建 就像斗地主一样,56张牌 new56个对象,三个人就占了56个内存地址, 那么一个棋牌平台估计经不起这么折腾,他们区别就是里面的数字 花色不同,把这个提出来, new一个扑克对象, 里面包含一个类 而这个类
阅读全文
摘要:组合模式: 适用于 树形结构,例如我们的C盘里面就是一个树形结构,你不知道里面有多少个文件夹,但是现在要找出来c盘下面A文件里面的文件数量 就可以用递归实现 你只需要知道C://A文件盘位置 组合模式分为安全和透明模式 有父类和子类 安全:就是子类自己有递归方法 透明:就是父类自己有递归方法,这就造
阅读全文
摘要:1:最开始需求 在我们的系统中有一个数据在新增之后要发送给RA系统 于是代码1.0:就写成一个公共方法,在数据新增的地方调用 2:突然代码又来了一个删除的需求 于是 3: 现在需求又来了 需要推送系统可配置,想推那个系统就推那个系统, 代码如下: using ObserverPattern.Obse
阅读全文
摘要:设计模式六大原则: 1.单一职责 2.开闭原则 3.里氏替换原则 4.依赖倒置原则 5.接口隔离原则 6.迪米特法则 模式总结: 1.创建型模式总结 2.结构型模式总结 3.行为型模式总结 设计模式: 创建型模式:1.简单工厂 2.单例模式 3.原型模式 4.建造者模式 结构型模式:6.桥接模式 7
阅读全文
摘要:1:为了不同集合 提供统一的访问方式 2:foreach 就是c# 完美实现了迭代器模式 yiled 关键字 按需获取语法糖 我们在迭代集合的时候 编译器其实是只会给你当前的值, 不会你给一个100数据长度给foreach 人家就直接给你全部结果 而是一个个返回给你
阅读全文
摘要:反面例子: ui点击付款>数据就知道到数据库了,如果 1-2点数据库崩了,人又付款了 那就凉凉了 使用命令模式:调用者将请求封装,>请求封装成命令对象,>最后发送给执行者, 命令>执行者 中间就可以做成异步队列服务,保存好命令集,哪怕数据库崩了,也可以执行命令集来恢复 命令模式包含的四个对象:调用者
阅读全文
摘要:关注对象的分离, 行为型模式的巅峰 1:使得各个流程直接的流转数据 存到一个第三方contenxt 也是责任链模式的标致, 审批过程中的节点动态扩展及更改
阅读全文
摘要:模板方法:1:应对在一个长业务固定流程中,环节可扩转变化就可以使用模板方法, 2:定义一个抽象父类,实现通用的处理流程 对于不同业务在抽象父类提供抽象方法,由不同子类去实现 对于部分相同业务在抽象父类提供虚方法,默认为父类方法,子类可重新定制个性化需求 3:普通方法的调用是调用左边的方法 由编译决定
阅读全文
摘要:装饰器模式:面向切面编程 (AOP) 动态的添加功能 动态的给对象添加 层级功能 每一层都是单独的可变顺序的
阅读全文
摘要:桥接模式: /// 1 多重继承与变化封装/// 2 桥接模式:解决多维度的变化
阅读全文
摘要:1:实现单例模式的 1:构造函数私有化,提供公共静态方法给外面访问,定义一个静态变量保存实例 加上双重判断和锁 这个也叫懒汉单例模式 在单例类里面定义方法,方法是先执行 2:静态构造函数,由CLR控制,且只调用一次,也叫饿汉单例模式, 定义的静态方法必须先构造这个实例再执行 2:为什么使用单例 对象
阅读全文
摘要:适配器模式:两个不同的对象 让他们实现适配, 使用条件:第三方类是无法更改的才需要新增一层适配 可以更改就无须使用适配 有两种实现方法1: 以继承类方式适配,但是强耦合 子类继承了父类全部方法 可能是不需要的 2:组合方式进行适配 如果姚明会英语那么久没必要适配器,所以第三方内部可以更改就没必要适配
阅读全文
摘要:创建型模式就是前面大佬总结出 对象的创建 如何合理利用 最后得出来的一些解决方案 原型模式:对象>浅拷贝与深拷贝,与c#内存有关 使用条件:需要很多重复的对象 有两个维度,一个是一摸一样的对象,一个是不同的对象 一个学生类,那么如果有十几万的学生类呢,不可能实例化十几万个吧,于是就有原型模式,可以浅
阅读全文
摘要:使用场景;适合很复杂对象的创造,以及流程固定 建造者模式四大角色:导演,工人,抽象工人,产品 建造者模式:对象>怎么按顺序组装 使用条件:比工厂更复杂的对象创建 具体工人class,抽象工人需要建造的方法class,方法class,设计者class
阅读全文
摘要:反面例子: 一个商场收银系统初期做的时候只考虑简单的金额加减, 写在一个计算方法中, 某节假日突然需求扩展 增加一个满100-50活动 满200-100活动 满500-300 此时是不是只能在这一个计算方法中, 根据金额进行相应的if或者switch判断,然后进把金额返回给前端 正面例子: 使用策略
阅读全文
摘要:使用场景:创建复杂对象的时候使用 一般写法: 产品直接到工厂,要生产什么 都堆在产品里面 产品 工厂 简单工厂: 发送指令给工厂,由工厂来生成具体产品对象 产品 抽象产品 工厂 工厂方法: 产品 抽象产品 工厂 抽象工厂 抽象工厂:对工厂方法的拓展 具体使用方法:更加业务来,没有最好的设计模式,只有
阅读全文