刷新
设计模式之状态模式(三分钟学会一个设计模式)

博主头像 状态模式(State Pattern)的定义是这样的:类的行为是基于它的状态改变的。注意这里的状态不是狭义的指对象维护了一个“状态”字段,我们传入了不同的枚举值,对象整体的表现行为(对外方法)就改变了。而是指内部的(任意)字段如果发生了变化,那么它的状态就变了,那么它对外的表现形式就变了。状态模式是 ...

读软件设计的要素07读后总结与感想兼导读

博主头像 1. 基本信息 软件设计的要素 丹尼尔·杰克逊著 浙江教育出版社,2024年5月出版 1.1. 读薄率 书籍总字数236千字,笔记总字数18853字。 读薄率18853÷236000≈8% 1.2. 读厚方向 构建可扩展分布式系统方法与实践 设计模式:可复用面向对象软件的基础 程序员修炼之道:通向务 ...

读软件设计的要素06概念完整性

博主头像 1. 概念完整性 1.1. 当概念组合成一个软件时,它们可以同步以便协调行为 1.1.1. 同步可能会消除一个概念的某些行为,但决不会添加与该概念的规范不一致的新行为 1.1.2. 在使用概念设计软件时,即使你没有精确定义同步,至少要说服自己,概念之间的每次交互至少在原则上都可以被视为同步 1.2. ...

读软件设计的要素05概念的特性

博主头像 1. 概念的特性 1.1. 专一性原则(specificity principle)认为概念与目的应该一一对应 1.1.1. 专一性原则已被证明是概念设计中最有用的原则之一 1.1.2. 一个概念最多只能满足一个目的 1.2. 很少有没有目的的概念 1.2.1. 如果本应隐藏的用户机制被暴露,可能会 ...

读软件设计的要素04概念的关系

博主头像 1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一 ...

读软件设计的要素03概念的组合

博主头像 1. 概念的组合 1.1. 概念不像程序那样,可以用较大的包含较小的 1.1.1. 每个概念对用户来说都是平等的,软件或系统就是一组串联运行的概念组合 1.2. 概念是通过操作来同步组合的 1.2.1. 同步并不增加新的概念操作,但会限制已有的操作,从而消除一些独立概念可能会出现的操作序列 1.3. ...

读软件设计的要素02概念的目的

博主头像 1. 要素 1.1. 概念的定义包括名称、目的、状态、操作和操作原则 1.2. 操作原则(operational principle) 1.2.1. 操作原则用于展示如何通过操作实现目的,这是理解概念的关键 1.2.2. 展示如何通过操作的组合实现概念的目的,包含一个或多个典型的使用场景 1.2.3 ...

读软件设计的要素01概念

博主头像 1. 概念 1.1. 一个软件,从运行于手机上的最小程序到大型的企业系统,都是由概念组成的,每个概念都是独立的功能单元 1.2. 软件中的可用性问题,经常可以追溯到其底层概念 1.2.1. 概念帮助识别软件的不可用性 1.3. 概念都是以同样形式在各种软件中重复使用的 1.3.1. 将设计分解为最基 ...

设计模式之命令模式

博主头像 命令模式(Command Pattern),给大家的第一感觉,就是给程序发送命令,比如:启动、暂停,然后程序根据接收到的命令直接执行就行。这样的理解相对来说比较狭义,来看下命令模式官方的定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便 ...

设计模式之备忘录模式

博主头像 备忘录模式(Memento Pattern)官方的定义是这样的:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。它是面向对象的23种设计模式中的一种,属于行为模式的范围。直白点说就是:我们可以在不暴露更多字段的前提下,直接将某个对象 ...

信息系统设计速查表

博主头像 信息系统设计速查表需求收集功能性需求:通过用户访谈、问卷调查和市场分析来确定系统必须实现的功能。 非功能性需求:定义性能基准(如响应时间)、安全性要求(如数据加密标准,传输加密)、可靠性标准(如系统的正常运行时间, MTTR)。 用户故事:使用敏捷方法论,如Scrum,来创建和优先级排序用户故事。 ...

设计模式之迭代器模式

博主头像 迭代器模式很多人都熟悉,但是什么是迭代器,为什么要用迭代器?这个很多人就很难做出具体回答了,只是知道如果有了迭代器,那么我们就能foreach遍历了,方便循环处理。这只是对迭代器的用途,进行了回答,foreach语法是java1.5时加入的语法糖,那么在这之前呢,之前是怎么做的?要知道并不是所有容器 ...

Logging日志

博主头像 日志处理logging 一、日志输出 日志默认的输出等级为:waring级别及以上的等级 修改日志的默认输出等级通过logging.basicConfig(level='INFO') 记录日志打印时间:logging.basicConfig(format=console_fmt) console_f ...

设计模式——六大原则

博主头像 一、 六大设计原则 1. 单一职责原则:应该有且仅有一个原因引起类的变更 2. 里氏替换原则:子类可替换父类。 a) 子类必须完全实现父类的方法 b) 子类可以有自己的个性 c) 子类实现父类方法时,入参可放大 d) 子类实现父类方法时,输出参数可缩小 3. 依赖倒置原则:高层模块不应该依赖底层模块 ...

事件总线的设计与实现

博主头像 事件总线(在有些框架中也称时间聚合器,如Prism的EventAggregater)是订阅-发布模式的一种实现,类似观察者模式,相对于观察者模式,事件总线更灵活,它是一种集中处理事件的模式,允许不同组件之间通信,降低耦合度。 事件总线的三要素:事件源(事件的定义)、发布事件(触发事件)、订阅事件(事 ...

设计模式之责任链模式

博主头像 责任链模式是面向对象的23种设计模式中的一种,属于行为模式范围。责任链模式(Chain of Responsibility),见名知意:就是每一个处理请求的处理器组合成一个链表,链表中的每个节点(执行器)都有机会处理发送的请求。 大致的结构是这个样子: 举一个简单的例子:某公司有一名新员工要入职,则 ...

过滤器模式

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。 双龙物流 概要 意图 用于将对象的筛选过 ...

发布订阅模式的TS实现

博主头像 简介 发布订阅模式是一种常用的用于解耦的模式。 它和观察者模式的区别在于: 观察者模式:被观察者需要维护一个观察者的集合; 发布订阅模式:通信双方互相不知道对方的存在,通过第三方事件总线进行通信。 发布订阅模式在前端领域很常见,例如: Vue 框架中组件的$on和$emit方法; Node.js 中 ...

单例模式

博主头像 目录什么是单例模式?单例模式的特点单例模式的实现方式懒汉模式实现一(非线程安全)实现二(线程安全)实现三(线程安全、推荐)饿汉模式总结 什么是单例模式? 单例模式属于简单设计模式的一种。在整个系统的生命周期内,单例类有且只有唯一一个对象,典型的应用比如日志的句柄。使用单例模式时需要考虑线程安全的问题 ...

123···6>