01 2021 档案

摘要:什么是原型模式? 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式,来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式,简称原型模式。 原型模式的两种实现方法 阅读全文
posted @ 2021-01-20 15:42 kudo_shini 阅读(67) 评论(0) 推荐(0)
摘要:Builder 模式/建造者模式/构建者模式/生成器模式 我们可以把校验逻辑放置到 Builder 类中,先创建建造者,并且通过 set() 方法设置建造者的变量值,然后在使用 build() 方法真正创建对象之前,做集中的校验,校验通过之后才会创建对象。除此之外,我们把 ResourcePoolC 阅读全文
posted @ 2021-01-20 15:41 kudo_shini 阅读(106) 评论(0) 推荐(0)
摘要:工厂模式(Factory Design Pattern) 分类 简单工厂 工厂方法 工厂方法模式比起简单工厂模式更加符合开闭原则。 抽象工厂 依赖注入框架,或者叫依赖注入容器(Dependency Injection Container),简称 DI 容器 DI 容器底层最基本的设计思路就是基于工厂 阅读全文
posted @ 2021-01-20 15:40 kudo_shini 阅读(101) 评论(0) 推荐(0)
摘要:单例设计模式(Singleton Design Pattern) 单例的定义? 单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许创建一个对象(或者叫实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 单例的用处? 从业务概念上 阅读全文
posted @ 2021-01-20 15:39 kudo_shini 阅读(111) 评论(0) 推荐(0)
摘要:中介模式 (Mediator Design Pattern) 中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互 中介模式的原理和实现 中介模式的设计思想跟中间层很像,通过引入中介这个中间层,将一组对象之间的交互关系(或 阅读全文
posted @ 2021-01-20 15:37 kudo_shini 阅读(104) 评论(0) 推荐(0)
摘要:解释器模式( Interpreter Design Pattern) 解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法 解释器模式只在一些特定的领域会被用到,比如编译器、规则引擎、正则表达式 解释器模式的原理和实现 解释器模式为某个语言定义它的语法(或者叫文法)表 阅读全文
posted @ 2021-01-20 15:36 kudo_shini 阅读(94) 评论(0) 推荐(0)
摘要:命令模式(Command Design Pattern) 命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能 命令模式的原理与实现 落实到编码实现,命令模式用的最核心的实现手 阅读全文
posted @ 2021-01-20 15:35 kudo_shini 阅读(154) 评论(0) 推荐(0)
摘要:备忘录模式( Memento Design Pattern) 在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态 备忘录模式的原理与实现 备忘录模式也叫快照模式,具体来说,就是在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存 阅读全文
posted @ 2021-01-20 15:34 kudo_shini 阅读(68) 评论(0) 推荐(0)
摘要:访问者模式(Visitor Design Pattern) 多态是一种动态绑定,可以在运行时获取对象的实际类型,来运行实际类型对应的方法。而函数重载是一种静态绑定,在编译时并不能获取对象的实际类型,而是根据声明类型执行声明类型对应的方法。 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身 访 阅读全文
posted @ 2021-01-20 15:33 kudo_shini 阅读(129) 评论(0) 推荐(0)
摘要:迭代器模式(Iterator Design Pattern) 用来遍历集合对象。这里说的“集合对象”也可以叫“容器”“聚合对象”,实际上就是包含一组对象的对象,比如数组、链表、树、图、跳表。迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一 迭代器模式的原理和实现 阅读全文
posted @ 2021-01-20 15:32 kudo_shini 阅读(112) 评论(0) 推荐(0)
摘要:状态模式(State Design Pattern) 状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。 什么是有限状态机? 有限状态机,英文翻译是 Finite State Machine,缩写为 阅读全文
posted @ 2021-01-20 15:31 kudo_shini 阅读(124) 评论(0) 推荐(0)
摘要:职责链模式(Chain Of Responsibility Design Pattern) 模板模式、策略模式,职责链模式具有相同的作用:复用和扩展 将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。 阅读全文
posted @ 2021-01-19 18:03 kudo_shini 阅读(72) 评论(0) 推荐(0)
摘要:策略模式(Strategy Design Pattern) 定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代指使用算法的代码)。 工厂模式是解耦对象的创建和使用,观察者模式是解耦观察者和被观察者。策略模式跟两者类似,也能起到解 阅读全文
posted @ 2021-01-19 18:00 kudo_shini 阅读(160) 评论(0) 推荐(0)
摘要:模板模式(Template Method Design Pattern) 模板模式主要是用来解决复用和扩展两个问题 模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。 模板模式作用一:复用 模板模式作 阅读全文
posted @ 2021-01-19 17:59 kudo_shini 阅读(99) 评论(0) 推荐(0)
摘要:观察者模式(Observer Design Pattern) 观察者模式(Observer Design Pattern)也被称为发布订阅模式(Publish-Subscribe Design Pattern) 在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知 阅读全文
posted @ 2021-01-19 17:58 kudo_shini 阅读(88) 评论(0) 推荐(0)
摘要:享元模式(Flyweight Design Pattern) 享元模式原理与实现 享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。 当一个系统中存在大量重复对象的时候,如果这些重复的对象是不可变对象,我们就可以利用享元模式将对象设计成享元,在内存中只保留一份实例,供多处代码引用。 它 阅读全文
posted @ 2021-01-19 14:48 kudo_shini 阅读(78) 评论(0) 推荐(0)
摘要:组合模式(Composite Design Pattern) 主要是用来处理树形结构数据 将一组对象组织(Compose)成树形结构,以表示一种“部分 - 整体”的层次结构 组合模式的设计思路,与其说是一种设计模式,倒不如说是对业务场景的一种数据结构和算法的抽象。其中,数据可以表示成树这种数据结构, 阅读全文
posted @ 2021-01-19 14:47 kudo_shini 阅读(72) 评论(0) 推荐(0)
摘要:门面模式/外观模式(Facade Design Pattern) 门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 门面模式的原理与实现 假设有一个系统 A,提供了 a、b、c、d 四个接口。系统 B 完成某个业务功能,需要调用 A 系统的 a、b、d 接口。利用门面模式,我们提 阅读全文
posted @ 2021-01-19 14:46 kudo_shini 阅读(65) 评论(0) 推荐(0)
摘要:适配器模式(Adapter Design Pattern) 将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 实现方式: 类适配器:继承 对象适配器:组合 如果 Adaptee 接口并不多,那两种实现方式都可以。 如果 Adaptee 接口很多,而且 Adapt 阅读全文
posted @ 2021-01-18 15:45 kudo_shini 阅读(101) 评论(0) 推荐(0)
摘要:装饰器模式 装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。它主要的作用是给原始类添加增强功能。这也是判断是否该用装饰器模式的一个重要的依据。除此之外,装饰器模式还有一个特点,那就是可以对原始类嵌套使用多个装饰器。为了满足这个应用场景,在设计的时候,装饰器类需要跟原始类继承相同的抽象类 阅读全文
posted @ 2021-01-18 15:44 kudo_shini 阅读(61) 评论(0) 推荐(0)
摘要:桥接模式( Bridge Design Pattern) 将抽象和实现解耦,让它们可以独立变化 Notification 类相当于抽象,MsgSender 类相当于实现,两者可以独立开发,通过组合关系(也就是桥梁)任意组合在一起。所谓任意组合的意思就是,不同紧急程度的消息和发送渠道之间的对应关系,不 阅读全文
posted @ 2021-01-18 15:42 kudo_shini 阅读(71) 评论(0) 推荐(0)
摘要:代理模式(Proxy Design Pattern) 通过引入代理类来给原始类附加功能;为了将框架代码和业务代码解耦,代理模式就派上用场了。 代理模式的原理解析 参照基于接口而非实现编程的设计思想,将原始类对象替换为代理类对象的时候,为了让代码改动尽量少,在刚刚的代理模式的代码实现中,代理类和原始类 阅读全文
posted @ 2021-01-18 15:41 kudo_shini 阅读(101) 评论(0) 推荐(0)
摘要:打印(message) 基本用法 message([<mode>] "message text" ...) message(<checkState> "message text" ...) 用法一(打印信息) mode usage -/NOTICE 无格式 STATUS 非重要消息; DEPRECA 阅读全文
posted @ 2021-01-15 18:05 kudo_shini 阅读(702) 评论(0) 推荐(0)
摘要:宏和函数(marco&function) 基本用法 macro macro(MACRO_NAME arg) message("arg = ${arg}") endmacro() function function(FUNCTION_NAME arg) message("arg = ${arg}") 阅读全文
posted @ 2021-01-15 17:06 kudo_shini 阅读(227) 评论(0) 推荐(0)
摘要:断言 断言方法 断言结果 ASSERT_ * fatal failures(致命错误,程序中断) EXPECT_ * non-fatal failure(非致命错误,适用于普通错误) 基本断言方法 fatal assertion Nonfatal assertion Verifies ASSERT_ 阅读全文
posted @ 2021-01-15 09:36 kudo_shini 阅读(228) 评论(0) 推荐(0)