建造者模式 介绍 建造者模式注重的是部件构建的过程,意在通过一步一步地精确构造出一个复杂的对象。 可以将建造者模式理解为,假设我们有一个对象需要建立,这个对象是由多个组件(Component)组合而成,每个组件的建立都比较复杂,但运用组件来建立所需的组件对象非常简单,所以我们就可以将构建复杂组件的步 ...
在创建型模式中,工厂模式是我们日常使用最为频繁的设计模式之一。工厂模式可细分为简单工厂模式、工厂方法模式、抽象工厂模式。 简单工厂模式 模式简介 简单工厂模式:根据参数返回不同类的实例,这些类通常具有共同的父类。 简单工厂模式包括三个角色: 工厂 (Factory):用于创建所需产品,提供静态工厂方 ...
以下为本人的学习笔记 1.设计模式的目的 编写软件过程中,程序员面临着来自耦合性,内聚性和可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件)具有更好的 代码重用性(即:相同功能的代码,不用多次编写) 可读性(即:编程规范性,便于其他程序员的阅读和理解) 可扩展性(即:当需 ...
场景引入 假如你在A城市,要去B城市旅游,交通方式有以下几种选择: 驾车 火车 飞机 不难写出这样的代码: void transport(string method) { if (method == "drive") { // 处理驾车相关业务逻辑 } else if (method == "tra ...
实现AOP(面向切面编程)的一种便捷方式,额外扩展统一管理 装饰器的实现我在语言进阶篇中有提到,这里不再赘述 1 from decorator import decorator 2 3 4 @decorator 5 def pre_execute(func, param=None, *args, * ...
简化应用程序内部接口,提供一个单一接口以供外部(前端or客户侧)调用 1 class Valley: 2 3 def run(self): 4 self.pre_declare() 5 self.declare() 6 self.after_declare() 7 8 def pre_declare ...
外观模式(facadePattern)又叫门面模式,隐藏了子系统的复杂实现,为子系统中的一组接口提供了一个统一的访问入口,使得子系统容易被访问或使用,说白了就是把复杂的子系统封装成一个接口供给外部用户更简单地使用,这也是一种结构型设计模式。 模式结构图: 此模式中涉及的三种角色: 1、门面角色(Fa ...
观察者模式是极其重要的一个设计模式,也是我几年开发过程中使用最多的设计模式,本文首先概述观察者模式的基本概念和Demo实现,接着是观察者模式在Java和Spring中的应用,最后是对观察者模式的应用场景和优缺点进行总结。 ...
一、简单工厂 创建对象的工作交由统一的函数接口来管理,传入不同的参数,返回不同的类对象 1 class AqSb: 2 3 def __repr__(self): 4 return "按期申报页面" 5 6 7 class QtSb: 8 9 def __repr__(self): 10 retur ...
一、前言 Caffeine是一个高性能的 Java 缓存库,底层数据存储采用ConcurrentHashMap 优点:因为Caffeine面向JDK8,在jdk8中ConcurrentHashMap增加了红黑树,在hash冲突严重时也能有良好的读性能。多线程环境中,不同的key可以并发写,相同的ke ...
在我看来并不是MVC的基础上增加领域层,使用充血模型,解耦基础服务,我的代码就符合DDD了。
为什么要使用DDD?
DDD分为战略部分跟战术部分,相信大家都认同DDD的核心在战略而非战术。而战略方面的核心我认为在业务建模,领域划分、统一语言等都在为业务建模服务。
为什么业务建模重要?
... ...
苍穹之边,浩瀚之挚,眰恦之美; 悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》 写在开头 在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。主要原因是,对于多线程实现实现并发,一直以来,多线程都存在2个问题: 线程之间 ...
苍穹之边,浩瀚之挚,眰恦之美; 悟心悟性,善始善终,惟善惟道! —— 朝槿《朝槿兮年说》 写在开头 在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。主要原因是,对于多线程实现实现并发,一直以来,多线程都存在2个问题: 线程之间 ...
定义 **桥接模式(Bridge Pattern)**定义:将抽象化与实现化分离,使得双方可以独立变化。 当然定义什么的通常都晦涩难懂,咱们还是借助例子来理解。 举例 还是举个例子吧。 假如说,有个图形(Graphics)接口,具有方法draw(),他有两个可以变化的维度,形状(Shape)和颜色( ...
前言 如果你第一次接触秒杀,可能还不太理解,库存100件就卖100件,在数据库里减到0就好了,这有什么麻烦的?理论上是这样,但是具体到业务场景中就没那么简单了。今天就聊聊减库存的设计,之后以高可用方案来结束秒杀设计的全部内容。 一、秒杀中的减库存 减库存操作一般有如下几个方式: 1.下单减库存:下单 ...
我的设计模式之旅。本节学习模板方法模式。从多个类包含许多相似代码的问题中思考如何在保持算法结构完整的情况下去除重复代码。介绍了模板方法模式的概念和实现方法。 ...
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 ...
本文的重点在于说明工作中所使用的设计模式,为了能够更好的理解设计模式,首先简单介绍一下业务场景。使用设计模式,可以简化代码、提高扩展性、可维护性和复用性。有哪些设计模式,这里就不再介绍了,网上很多,本文只介绍所用到设计模式。 ...
在面向对象的程序设计中,模块之间交互采用接口编程,通常情况下调用方不需要知道被调用方的内部实现细节,因为一旦涉及到了具体实现,如果需要换一种实现就需要修改代码,这违反了程序设计的"开闭原则"。所以我们一般有两种选择:一种是使用API(Application Programming Interface ...
我的设计模式之旅。本节学习了适配器模式。从程序调用第三方库时遇到的问题着手,思考如何让两个不关联的类一起工作。并尝试使用C#运用适配器模式解决方钉与圆孔问题。 ...