戏说领域驱动设计(廿二)——聚合

聚合的自白 大家好,我是聚合,在你们的期盼之下我终于出来了。其实早就想和大家见一面,不过作者每天总想着水流量,到现在才让我出来。他把实体和值对象这两个我家庭内的成员先介绍让我感觉非常的不公平。没有国哪有家?没有家庭,生活也不会温暖。好多的工程师眼里只想着实体他们,让我难受的想要哭泣。明明是由于我的存 ...阅读全文

创建型:五. 抽象工厂模式

抽象工厂模式是什么 抽象工厂是一种创建型设计模式,用于产品族的构建。它能创建一系列相关的对象, 而无需指定其具体类。 为什么用抽象工厂模式 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法。但是有时候我们需要 ...阅读全文

创建型:四. 工厂方法模式

工厂方法模式是什么 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。 为什么用工厂方法模式 在新增一个产品时,不用去修改已有的代码。工厂方法将创建产品的代码与实际使用产品的代码分离,从而能在不影响其他代码的情况下扩展产品创建部分代码。例如,如果需 ...阅读全文

结构型:七. 享元模式

享元模式是什么 享元模式:是一种结构型设计模式,它允许你在消耗少量的内存的情况下支持大量的对象。享元模式通过共享多个对象的部分状态来实现上述功能。即是享元模式会将不同对象的相同功能缓存以节省内存。 为什么用享元模式 如果程序中有很多相似对象,这时候你就可以用享元模式来节约内存。 享元模式怎么实现 这 ...阅读全文

redis随笔

1、八大内存淘汰机制 1)、直接返回错误,不删除任何键 2)、删除过期键 3)、随机删除redis键 4)、随机删除快过期键 5)、根据lru算法删除redis键 6)、根据lru算法删除要过期redis键 7)、根据lfu算法删除redis键 8)、根据lfu算法删除快要过期redis键 2、热k ...阅读全文

结构型:五. 桥接模式

桥接模式是什么 桥接模式:桥接是一种结构型设计模式, 可将业务逻辑或一个大类拆分为不同的层次结构, 从而能独立地进行开发。 为什么用桥接模式 对于两个独立变化的维度,使用桥接模式再适合不过了. 桥接模式怎么实现 这里是将computer和printer分成两层,用接口的方式把强耦合转化为弱耦合。这两 ...阅读全文

网络通信知识地图

我在之前一段时间做过网络通信的系列文章,但是文章还是偏散,没有一个整体脉络,本篇就以知识地图的形式来进行梳理。 知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。本篇主要就是从更高的视角将之前的文章的结构思路展现出来。文章结构的思路实际上也是达到架构师程度要掌握的网络通信知识学习路 ...阅读全文

结构型:四. 代理模式

代理模式是什么 代理模式是一种结构型设计模式, 让你能提供真实服务对象的替代品给客户端使用。 代理接收客户端的请求并进行一些处理 (访问控制和缓存等), 然后再将请求传递给服务对象。 为什么用代理模式 在某些情况下客户类不想或者不能访问目标对象,这时候就可以使用代理类访问。 代理模式怎么实现 pac ...阅读全文

结构性:三. 装饰器模式

装饰器模式是什么 是一种结构型设计模式,它允许你将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。由于目标对象和装饰器遵循同一接口,所以你可以对目标进行多次装饰,最后结果为所有装饰器叠加的行为。 为什么用装饰器模式 需要动态的给一个对象增加功能,并且可以动态的撤销的时候。当系统需要添加新的功 ...阅读全文

重新讲讲单例模式和几种实现

一、什么讲单例模式 单例模式,最简单的理解是对象实例只有孤单的一份,不会重复创建实例。 这个模式已经很经典了,经典得我不再赘述理论,只给简单注释,毕竟教科书详尽太多。 解决 sonar RSPEC-2168 异味的时候,发现目前业界推荐的单例模式和教科书上的已经有了较大差异,双重锁定不再推荐,甚至业 ...阅读全文

戏说领域驱动设计(十七)——实体实战

上一节中讲了实体的一些概念,作为DDD中最为复杂的组件,想用好了还需要在实践中慢慢去摸索,都是摸爬滚打过来的。本章着重演示一些实体相关的代码,通过建立一个基类和通用方法,能让您在开发过程中少写一些重复的代码同时也减少在使用第三方开源框架时的学习成本。此外,是从0写代码,不需要付出太多的精力便可以加深 ...阅读全文

结构型:二. 外观模式(facade)

外观模式是什么 外观模式是一种结构性设计模式,它能为程序库、框架或者其他复杂的子系统提供一个统一的高层界面,使子系统更容易使用。外观模式就是聚合多个接口实现,对外只暴露单个接口。隐藏子系统的复杂性。调用方不关心实现步骤。 为什么要用外观模式 当子系统提供的功能很多,而我们子需要多个子系统中很少的几个 ...阅读全文

JDK动态代理

动态代理用反射技术、类加载技术以及代码生成技术实现代理逻辑的抽取复用以及代理实例的生成获取。用常规方式无法抽取复用相同的代理逻辑,因为目标方法的调用是不同的,只有通过反射的Method来统一目标方法的调用,进而完成代理逻辑的抽取复用,这样每个代理方法调用这个通用的代理逻辑,但是还是有大量的重复代码, ...阅读全文

结构型:一. 适配器模式

适配器模式是什么 适配器模式(Adapter Design Pattern)适配器是一种结构型设计模式, 用来将不兼容的接口转换为兼容的接口。适配器可担任两个对象间的转换器, 它会接收对于一个对象的调用, 并将其转换为另一个对象可识别的格式和接口。 为什么用适配器模式 两个对象直接由于格式或者接口不 ...阅读全文

创建型:三. 原型模式

原型模式是什么 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 为什么要用原型模式 可以帮助我们优雅地创建对象的拷贝。在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象。被克隆的对象需要提供一个clone()方法。通过这个方法可以返回该对象的拷 ...阅读全文

创建型:二. 生成器模式

生成器模式是什么 生成器模式也叫做建造者模式,是一种创建型的设计模式, 使你能够分步骤创建复杂对象。 为什么要用生成器模式 假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行复杂的初始化工作。这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中。而且在很多时候 ...阅读全文

重新认识受控和非受控组件

作者:霜序 校稿:袋鼠云数栈前端团队运营小组 该文章包含如下内容 受控与非受控组件 非受控组件 受控组件 受控和非受控组件边界 反模式 解决方案 前言 在 HTML 中,表单元素(<input>/<textarea>/<select>),通常自己会维护 state,并根据用户的输入进行更新 <for ...阅读全文