02 2021 档案
摘要:一、使用背景【动机】 当我们错误的使用继承来进行功能扩展时,在需求不断变更的同时可能会增加很多子类,且缺乏灵活性,那么这个时候我们可以考虑使用装饰器模式进行重构。 二、引入问题 举个栗子:我们需要做一个画图的接口 第一次需求已经实现了画图的基本功能,且分别拥有了两个子类实现“圆形”和“长方形”。 第
阅读全文
摘要:一、使用背景【动机】 当我们需要构建一种“通知依赖关系”时,如果这种业务模型耦合度太高的时候,就不能很好的抵御新需求的变化,此时就需要用到观察者模式来进行改造了。 二、代码演示 话题类【话题】 观察者接口【抽象的观察者】 观察者实现类【具体的观察者】 观察者测试类【模拟消息的发布-订阅】 三、模式讲
阅读全文
摘要:一、使用背景【动机】 在某一个任务中,某些对象算法可能多种多样且经常改变【如常见的多个if else块进行扩展】时,我们可以采用策略模式来优化。 二、痛点 不使用策略模式之前,代码if else块过多的时候,我们可以看出来这是一种结构化思想的“分而治之”的观念;对于面向对象编程时代,我们应该将其抽象
阅读全文
摘要:一、使用背景【动机】 在某一个任务中,其通常具有稳定的主干结构,而子步骤却可能会有很多可改变的地方。 二、代码演示 模板类 子类 测试类【模拟主流程调用】 三、模式讲解 解析:定义一个操作中的算法骨架【模板方法(稳定):TemplateDemo.order()】,而将一些步骤【抽象方法(变化):Te
阅读全文
摘要:一、为什么要面向对象设计 痛点:需求时刻变化,而变化又是系统复用的天敌。 优势:抵御变化。 目标:达到“接口标准化”的思想。 二、重新认识面向对象 理解隔离变化 宏观层面,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响降至最小。 各司其职 微观层面,面向对象的方式更强调各个类的“责任”。
阅读全文
摘要:一、概念和准备工作 什么是事务 定义:事务是数据库操作最基本的单元,逻辑上的一组操作,要么都成功,如果有一个操作失败则所有操作都失败。 典型场景:银行转账 阿肥转账100闷给阿靓 阿肥:-100 阿靓+100 事务的四个特性(ACID) 原子性:操作不可分割,要么都成功,一个失败则所有操作都失败。
阅读全文
摘要:一、学习设计模式 学习目标 理解松耦合的设计思想 掌握面向对象的设计原则 掌握重构技法改善设计 掌握GOF核心设计模式 什么是设计模式 描述在我们周围不断重复发生的问题,以及该问题解决方案的核心。 使用设计模式的目的 提高系统模块的可复用性。 二、面向对象的思维模型 底层思维模型 含义:向下的,目的
阅读全文