随笔分类 - 软件设计
有关软件设计相关的技术博客
摘要:概述 在一些数据量比较大的场景下,如每天进行的数据统计,在一段时间后可能数据量会变得特别大(上亿级别),并且有很大部分的老数据只有很小的概率进行查询。在这种情况下,原始的单表处理会成为新增数据的一个性能瓶颈,为了解决这一问题,一般都会对这部分业务的数据做分库或分表的处理。分表的方式一般分为垂直拆分和
阅读全文
摘要:概述 《设计模式》一书中对于 “模板方法模式” 的意图描述如下: 定义一个操作中的算法骨架,而将一些步骤延迟到子类中 一般在以下几种情况下使用模板方法模式: 一次性实现一个算法的不可变部分,并将可变的行为留给子类来实现 各个子类中的公共行为应当被提取出来并集中到一个公共父类中以避免重复代码(提炼父类
阅读全文
摘要:概述 《设计模式》一书中对于 “策略模式” 的意图描述如下: 定义一系列算法,将它们一个个封装起来,并是他们可以相互替代 一般策略模式的 UML 图如下所示: 一般在以下几种情况中使用策略模式: 许多相关的类仅仅是行为有异。“策略” 提供了一种用多个行为中的一个行为来配置一个类的方法 需要使用一个算
阅读全文
摘要:概述 《设计模式》一书中对于 “状态模式” 的描述如下: 允许一个对象在其内部状态发生改变时改变它的行为,使得这个对象看起来像修改了它的类 状态模式的 UML 图如下所示: 一般在以下几种情况下使用状态模式: 一个对象的行为取决于它的状态 一个操作中含有庞大的多分支条件语句,且这些分支依赖于该对象的
阅读全文
摘要:概述 《设计模式》一书中对于观察者模式的意图描述如下: 定义对象中的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都能得到通知并被更新 观察者模式的 UML 图如下所示: 一般在以下情况下使用观察者模式: 一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将这二者封装在独立
阅读全文
摘要:概述 《设计模式》一书中对于 “中介模式” 的意图描述如下: 用一个中介对象来封装一系列对象的交互。中介者使得各对象之间不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互 具体来讲,就是在对象过多,并且这些对象之间的交互关系过于复杂的情况下,通过引入第三方 “中介” 来处理这些
阅读全文
摘要:概述 《设计模式》一书中对于 “命令模式” 的意图描述如下: 将一个请求封装成为一个对象,从而可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作 一般 “命令模式” 的 UML 图如下所示: 一般会在以下几种情况下使用命令模式: 需要抽象出待执行的动作以参数化某对象
阅读全文
摘要:概述 《设计模式》一书中对于 “责任链模式” 的意图描述如下: 使多个对象有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止 一般的 UML 结构图如下所示: 其中,Handler 将会包含直接后继处理类 successo
阅读全文
摘要:概述 设计模式一书中对于 “外观模式” 的意图描述如下: 为子系统中的u一组接口提供一个一致的界面,外观模式定义了一个高层的接口,这个接口使得这一子系统更加容易使用 具体实例 以计算浮动利率为例,由于利率可能会发生变化,并且不同的产品期次对应的浮动利率检测配置并不一样,比如每月固定日期、每个季度的第
阅读全文
摘要:概述 《设计模式》一书中对于 “装饰模式” 的动机描述如下: 动态地给一个对象添加一些额外的职责 按照 SOLID 面向对象编程原则中的 O(开闭原则),对于功能的修改应当关闭,而对于功能的扩展应予以放开,“装饰模式” 就很好地体现了这一点 一般装饰模式的 UML 图如下所示: 一般在以下几种i情况
阅读全文
摘要:概述 《设计模式》一书中对于 “组合模式” 的意图描述如下: 将对象组合成树形结构以表示 “部分—整体” 的层次结构,组合模式使得用户对单个对象和组合对象的的使用具有一致性 一般组合模式的 UML 图如下: 一般在以下情况中使用组合模式: 希望表示 “对象—整体” 的类结构层次 希望用户忽略组合对象
阅读全文
摘要:## 概述 《设计模式》中对于 “桥接模式” 的动机描述如下: > 将抽象部分与它的实现部分分离,使他们可以独立地变化 桥接模式的类结构图一般如下所示:  一般在以下几个
阅读全文
摘要:概述 《设计模式》一书中对 “适配器模式” 的动机描述如下: 将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作 一般情况下的类结构图如下所示: 每个组件的介绍如下: Client:实际调用目标接口的对象 Target:当前设计的用于客户端调用的
阅读全文
摘要:概述 《设计模式》一书中对单例模式的 “动机” 描述如下: 保证一个额类仅有一个实例,并提供一个访问它的全局访问点 一般情况下,为了避免资源的浪费,可以考虑将一些不可变类或者无状态类设计成单例 具体实例 在当下环境中,对于单例模式的实现方式主要有两种方式:饿汉式和懒汉式。一般来将,如果创建对象实例的
阅读全文
摘要:概述 《设计模式》一书中对 “原型模式” 的意图描述如下: 用原型实例指定创建对象的种类,并通过拷贝对象的原型创建新的对象 貌似有点难懂,概括性地讲就是实现对不同类型对象的复制,而不需要知道他们的具体类型 一般情况下的类结构图如下图所示: 原型模式适用于以下场景: 当一个系统需要独立于它的产品创建、
阅读全文
摘要:概述 《设计模式》中对工厂方法模式的意图描述如下: 定义一个创建对象的接口,让子类来决定实例化哪一个类。Factory Method 使得一个类的实例化延迟到子类 一般工厂方法模式的类结构图如下所示: 其中,每个组件的介绍如下: Product:产品实例对象的统一接口,及工厂方法创建的对象抽象 Co
阅读全文
摘要:概述 《设计模式》中对抽象工厂(Abstract Factory) 模式的意图描述如下: 提供一个接口以创建一系列相关或相互依赖的对象,而无需指定它们具体的类 一般抽象工厂中的类结构如下图所示: 每个组件的介绍如下: AbstractFactory:一个创建抽象产品对象的接口 ConcreateFa
阅读全文
摘要:构建者模式(即 Builder 模式),该设计模式的主要目的是将一个复杂对象的构建和它的构造表示分离,使得对象的构建更加简单和可读。 构建者模式的结构一般如下图所示: 各个组件的介绍如下: AbstractBuilder:一个为创建 Product 对象各个部件的抽象接口 ConcreateBuil
阅读全文

浙公网安备 33010602011771号