
设计模式
自驱
ALOHA HEJA HE
展开
-
【golang】interface 如此动人,却被遗忘
上面的我们定义了id类型(type id string),现在需求变更了,我们希望我们的 EmployeeID 是一个数字,并且我们希望以一个部门作为前缀。首先,我们可以对 name struct 做同样的事情,就像我们对 id 所做的那样,添加一个接口,然后将这两个接口都嵌入。go语言定义接口,通常使用动词作为名称,例如,一个读取的接口是一个 Reader,一个写入的接口是一个 Writer,嵌入了 Reader 和 Writer 接口的接口被称为 ReadWriter。看到ID方法做同样的事情。...原创 2022-08-28 16:18:40 · 209 阅读 · 0 评论 -
【golang】代理模式 proxy using in go
代理模式是一种结构模式,其目的是提供对象的代理或中介来控制对象的访问。通常包装对象以隐藏其某些特征。下面举一个汽车的代理,Driven接口,Car和CarProxy都实现了,但是通过代理可以实现特殊逻辑的植入,如开车司机并限制司机的年龄等;门面模式和代理模式是相似的,因为在两者都可以缓冲复杂的实体,并初始化它自己。,修饰模式(Decorator Pattern)提供了一个增强的接口。代理模式提供了相同的接口。模式为包装对象提供了。...原创 2022-08-28 11:44:04 · 333 阅读 · 0 评论 -
【设计模式】现代架构设计模式:断路器,CQRS,事件来源,Sidecar边车,BFF和Strangler
注意: 如果您使用的是 API 网关,那么 BFF 模式可以很容易地在网关本身中实现,并且您不需要维护单独的服务。上图展示了电路断路器模式的实现,当服务1在调用服务2时存在连续的故障/超时时,服务1不再重试,而是跳过对服务2的调用并返回回退响应(当然也可以实现百分比按照百分比回退)。注意:当断路由打开时,需要有足够的日志记录和警报实现是非常关键的,以便跟踪在此期间收到的请求,并且开发团队知道这一点。的系统,这些系统需要维护事件的审计和历史记录ーー例如,像酒店/会议/座位预订这样的应用程序。原创 2022-08-25 09:12:59 · 531 阅读 · 0 评论 -
【DDD】学习 实践 参考
DDD 实践 参考 代码https://www.cnblogs.com/baihmpgy/p/10259264.html原创 2021-12-25 17:35:39 · 283 阅读 · 0 评论 -
go mod 依赖分析工具
go get -u github.com/PaulXu-cn/go-mod-graph-chart/gmchart检查安装情况,如下就是成功了gmchart --helpUsage of ~\go\bin\gmchart: -debug int is debug model -keep int start http server not exitgo mod graph | gmchart原创 2021-08-26 14:42:48 · 880 阅读 · 0 评论 -
RBAC 应用场景设计
1 简单业务用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系角色:可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。...原创 2021-08-18 07:46:18 · 411 阅读 · 0 评论 -
动用 装饰器模式 写控制逻辑从简单--->pipeline装饰
1简单的装饰器模式func decorator(f func(s string)) func(s string) { return func(s string) { fmt.Println("Started") f(s) fmt.Println("Ended") }}func Hello(s string){ fmt.Printf(s)}// 简单的装饰器模式func main(){ decorator(Hello)("Hello, world!\n")}2.原创 2021-08-03 17:33:09 · 86 阅读 · 0 评论 -
使用Map Reduce 不要使用循环--pipeline启示
处理数组,偶数 --> *3-->输出def even_filter(nums): return filter(lambda x: x%2==0, nums)def multiply_by_three(nums): return map(lambda x: x*3, nums)def convert_to_string(nums): return map(lambda x: 'The Number: %s' % x, nums)nums = [1, 2, .原创 2021-08-02 10:59:53 · 97 阅读 · 0 评论 -
微服务设计模式- -命令查询责任分离(CQRS)
1 ProblemHow to implement a query that retrieves data from multiple services in a microservice architecture?如何实现从微服务体系结构中的多个服务检索数据的查询?2 解决方案Define a view database, which is a read-only replica that is designed to support that query. The applicati原创 2021-07-30 13:16:56 · 199 阅读 · 0 评论 -
【Spring】Bean的创建和对象关系建立
1 Bean的创建时序图2 Bean对象关系创建3 UML 图4 入口点org.springframework.context.support.AbstractApplicationContext#refreshorg.springframework.context.support.AbstractApplicationContext#finishBeanFact...原创 2019-12-15 10:58:22 · 259 阅读 · 0 评论 -
【Spring 设计模式】AOP中涉及到的策略模式
JdkDynamicAopProxy 和 Advised 接口有关系,体现在Advised的子类AdvisedSupport!原创 2019-12-15 10:21:47 · 358 阅读 · 0 评论 -
【@InitBinder】spring 自定义属性编辑器
1 使用步骤 A 扩展点 Controller中增加 @InitBinder @Override public void initBinder(WebDataBinder binder) { super.initBinder(binder); // http post 请求中属性变量的自定义编辑器 binder.r...原创 2019-10-31 08:45:45 · 385 阅读 · 0 评论 -
【设计模式】--SINGLETON模式
SINGLETON模式: 1 访问都是通过公有的静态方法Instance访问。 2 Singleton类没有公有的构造函数。实现:public class Demo2 { public static void main(String[] args) { ExecutorService pool = Executors.newCach原创 2017-11-05 11:47:50 · 358 阅读 · 0 评论 -
Strategy模式
Strategy模式 1 关系依赖 public class StrategyContext{ private Map原创 2016-06-14 14:03:49 · 459 阅读 · 0 评论 -
面试--单例模式(75)
1 直接初始化public class Singleton { /** 单例变量 ,static的,在类加载时进行初始化一次,保证线程安全 */ private static Singleton instance = new Singleton(); /** * 私有化的构造方法,保证外部的类不能通过构造器来实例化。 */ private原创 2017-01-10 00:09:28 · 359 阅读 · 0 评论 -
设计模式--observer(316)
模式原型:实例:public interface Observer { public abstract void update(NumberGenerator numberGenerator);}public abstract class NumberGenerator { private ArrayList observers = new原创 2017-09-08 14:40:05 · 324 阅读 · 0 评论 -
【设计模式】--MONOSTATE模式
1 gingleton 单例模式 -->饿汉模式 实现创建实例 懒汉模式是使用时创建,关注行为2 monostate 模式 关注结构;3 示例class Monostate{ private static int itsX = 0; public Monostate(){ } public static int getItsX() {原创 2017-11-05 14:09:09 · 577 阅读 · 0 评论 -
【设计模式】--NULL OBJECT 模式
1 丑陋的代码: Employee e = DB.getEmployee("Tom"); if(e!=null && e.isTimeToPay(today))//丑陋且容易出错 e.pay();2 一个优化的方法: DB.getEmployee 抛出一个异常 但是try/catch更加丑陋,而且要声明这些异常。3 怎么办?看示例理解publi原创 2017-11-05 14:34:36 · 298 阅读 · 0 评论 -
【设计模式】--FACADE模式
目的:把某种策略施加到另外一组对象上。效果:将一组如java.sql包含的全面性和复杂性隐藏在一个简单且特定的接口后面;参考UML图如下: 参考:博客http://blog.youkuaiyun.com/duchao123duchao/article/details/51425085原创 2017-11-05 16:11:26 · 244 阅读 · 0 评论 -
【设计模式】--MEDIATOR 模式(老张)
JDK中的实例:QuickEntryMediator QuickEntryMediator 结构使用JList和JTextField构造了一个QuickEntryMediator类实例,QuickEntryMediator向JTextField注册了一个匿名的DocumentListener,每当文本变动时,listener就会调用textFieldChanged方法,该方法会在JLi原创 2017-11-05 16:24:43 · 299 阅读 · 0 评论 -
【设计模式】--TEMPLATE METHOD 模式 和 STRATEGY 模式 :继承和委托
简介:template method模式使用的是继承,把公用的方法抽象到1个抽象的基类中;子类去实现抽象的方法;strategy 模式使用的是接口+组合,把公用的算法,放到runner (worker)类中;UML见简图:【ApplicationRunner(算法的聚合)】---->【《interface》 Application】strategy模式代价:涉及更多数量原创 2017-11-05 17:10:32 · 319 阅读 · 0 评论 -
设计模式 --代理(46)
tomcat中的 设计模式–代理模式 Lifecycle接口 提供生命周期管理,并使用了LifecycleSupport接口,来实现对事件的发送,发送给其他组件容器。原创 2016-12-10 15:43:45 · 320 阅读 · 0 评论