c#装饰器模式详解
基础介绍: 动态地给一个对象添加一些额外的职责。适用于需要扩展一个类的功能,或给一个类添加多个变化的情况。 装饰器,顾名思义就是在原有基础上添加一些功能。 大家都只知道如果想单纯的给原有类增加一些功能,可以直接继续该类生成一个子类就可以。 举个例子,如果现在有个手机类,想给手机贴膜,传统的做法就是新 ...阅读全文
基础介绍: 动态地给一个对象添加一些额外的职责。适用于需要扩展一个类的功能,或给一个类添加多个变化的情况。 装饰器,顾名思义就是在原有基础上添加一些功能。 大家都只知道如果想单纯的给原有类增加一些功能,可以直接继续该类生成一个子类就可以。 举个例子,如果现在有个手机类,想给手机贴膜,传统的做法就是新 ...阅读全文
基础介绍: 想象这样一个场景,原项目中接口返回的数据是XML格式的数据,但现在来了一个新客户,它期望接口返回的数据类型为json格式的。 想要实现要么就是改原有接口,但这样就违反了开闭原则,容易出现未知bug,影响到老客户的正常使用。 而如果写一个适配器类也就是转换类(第三方类),将原本返回的XML ...阅读全文
从接触领域驱动设计的初学阶段,到实现一个旧系统改造到DDD模型,再到按DDD规范落地的3个的项目。对于领域驱动模型设计研发,从开始的各种疑惑到吸收各种先进的理念,目前在技术实施这一块已经基本比较成熟。在既往经验中总结了一些在开发中遇到的技术问题和解决方案进行分享。 ...阅读全文
一、定义 运用共享技术有效地支持大量细粒度对象的复用,享元模式是一种结构型模式。 二、描述 享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。享元模式的结构较为复杂,一般结合工厂模式一起使用,在其结构图中包含了一个享元工厂类,包含以下四个角色: 1、Flyweight(抽象享元类) ...阅读全文
哈喽大家好,我是咸鱼 想必大家都听说过 Instagram ,它是全球最受欢迎的社交媒体平台之一,拥有数十亿的活跃用户 Instagram 诞生于 2010 年,上线一周就坐拥 10 万注册用户,一年之内就拥有了 1400 万用户,可见扩张趋势突飞猛进。 Instagram 诞生的时候只有 3 个工 ...阅读全文
基础介绍: 具体可分为2个角色: Prototype(原型类):声明一个Clone自身的接口; ConcretePrototype(具体原型类):,实现一个Clone自身的操作。 在原型模式中,Prototype通常提供一个包含Clone方法的接口,具体的原型ConcretePrototype使用C ...阅读全文
本节介绍Util应用框架如何进行验证. 概述 验证是业务健壮性的基础. .Net 提供了一套称为 DataAnnotations 数据注解的方法,可以对属性进行一些基本验证,比如必填项验证,长度验证等. Util应用框架使用标准的数据注解作为基础验证,并对自定义验证进行扩展. 基础用法 引用Nuge ...阅读全文
本文介绍了结构型设计模式中的桥接模式,讲解了它的特点和相关构成,并通过相应的案例,使用Java代码进行演示。 ...阅读全文
前言 什么是设计模式? 设计模式是软件设计人员、软件开发人员在程序代码编写中总结出来的一套编码规范,设计模式起一个指导作用,用来指导我们写出高内聚低耦合,具有良好的可扩展性和可维护性的代码。 为什么要学设计模式? 当然,设计模式不是非学不可,不了解设计模式一样可以在工作中写出符合产品要求的功能。但是 ...阅读全文
基础介绍: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 说白了就是将一个复杂的对象拆分成一个一个零件,然后按照既定顺序和规则进行组装,最终形成这个相对复杂的对象。 具体可分为4个角色: Product(产品):复杂对象本身。 Builder(抽象建造者):既可以是抽象 ...阅读全文
本节介绍Util应用框架对AspectCore AOP的使用. 概述 有些问题需要在系统中全局处理,比如记录异常错误日志. 如果在每个出现问题的地方进行处理,不仅费力,还可能产生大量冗余代码,并打断业务逻辑的编写. 这类跨多个业务模块的非功能需求,被称为横切关注点. 我们需要把横切关注点集中管理起来 ...阅读全文
总体介绍: 工厂模式主要有三种类型:简单工厂、工厂方法和抽象工厂,该模式用于封装和管理对象的创建,是一种创建型模式。 万物皆对象,创建对象时必然需要new该对象,当需要更改对象时,需要把项目中所有地方都修改一遍,这显然违背了软件设计的开闭原则。 如果使用工厂来生成对象,那么我们只需要跟工厂打交道就可 ...阅读全文
退款业务强耦合到售后系统中,并且业务代码分散到各个业务层,严重缺乏系统的领域边界和分层设计,重构后退款业务逻辑不强依赖售后核心业务逻辑,做到可以独立部署。 ...阅读全文
基础介绍: 确保一个类只有一个实例,并提供一个全局访问点。 适用于需要频繁实例化然后销毁的对象,创建对象消耗资源过多,但又经常用到的对象,频繁访问数据库或文件的对象。 其本质就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。 特性和功能:确保一个类只有一个实例,并提供一个全 ...阅读全文
OpenKey.Cloud 作为 ChatGPT 生态圈内的重要基础设施,提供官方 API 的转发,长久以来一直保持着高稳定性,这是如何做到的?今天就来揭秘 OpenKey 系统的详细架构图。 ...阅读全文
基本介绍: 享元模式的定义:运用共享技术有效地支持大量细粒度的对象重复使用。适用于大量小粒度的对象造成的运行效率和内存使用效率低下的情况。 “享元”顾名思义,“享”共享的意思,“元”单元,最小对象,零部件的意思。 即从字面意思不难看出,该模式旨在共享一些零部件供其使用。 想要实现对这些零部件的重复使 ...阅读全文
网关上的请求头和响应头 当您通过MSE网关将请求转发到后端服务时,在网关中添加的请求头(例如 "hello")会在到达后端服务时一并发送给后端服务。您可以在后端服务中通过请求头获取该值。 当您在MSE网关中添加响应头(例如 "good"),该响应头会在后端服务完成响应之后,由MSE网关添加到响应中。 ...阅读全文
为了广泛支持营销活动的复杂与灵活,Wonder8.promotion(旺德發.营销)引擎使用专门设计的表达式高度提炼信息,可以轻松表达营销活动与用户选取的商品组合之间匹配范围、要求、折扣方式,可以设定多条营销规则的逻辑联合、分组、优先级,并且支持多种为用户计算最优折扣的策略。 本引擎功能细节较多,建... ...阅读全文
一、定义 为子系统中的一组接口提供一个一致的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是一种结构型模式。 二、描述 包含以下两个角色:1、Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或多个)子系统的功能和责任;在正常情况下, ...阅读全文
非功能性需求是什么呢?保障系统持续健康运转的辅助需求。依然以电商系统的优惠券为例,在促销活动期间发放大量优惠券,如何防止用户集中领券时系统不崩盘呢?活动结束后,如何收缩服务器,节省服务器资源呢? 非功能性需求是面向运维的,重要但是不太紧迫,有时候可以没有操作界面,由架构师提出解决方案,再推动各个业务... ...阅读全文