![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式实战
常耀斌
CTO,AI科学家。清华社发行《大数据架构之道和项目实战》2018年12月出版,《AI赋能企业数字化转型》2024年8月出版,《深度学习和大模型实战》2024年9月出版
展开
-
采用策略模式实现Post和MQ的转发
策略模式进行设计如下public class StrategyContext { private static SendStrategy mqStrategy = null; private static SendStrategy postStrategy = null; static { mqStrategy = new MqStrategy(); postStrategy =...原创 2018-09-09 11:38:53 · 863 阅读 · 0 评论 -
责任链模式之分级上报之案例实战
《设计模式》中给它的定义如下:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。从定义上可以看出,责任链模式的提出是为了“解耦”,以应变系统需求的变更和不明确性。下面是《设计模式》中给出的适用范围:1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。2) 你想在不明确指定接收者的...原创 2018-09-14 16:49:45 · 394 阅读 · 0 评论 -
迭代器模式之任务执行案例实战
迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF 给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。从定义可见,迭代器模式是为容器而生。很明显,对容器对象的访问必然涉及到遍历算法。你可以一股脑的将遍历方法塞到容器对象中去;或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧。这两种情况好像都能够解决问题。然而在前一...原创 2018-09-14 16:30:31 · 446 阅读 · 0 评论 -
观察者模式之命令下达案例实战
观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF 给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在这里先讲一下面向对象设计的一个重要原则——单一职责原则。系统的每个对象应该将重点放在问题域中的离散抽象上。因此理想的情况下,一个对象只做一件事情。这样在开发中也就带来了诸多的...原创 2018-09-14 16:24:06 · 944 阅读 · 0 评论 -
策略模式之支付案例实战
策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算法,可以理解为不同的业务处理方法。这种做法会带来什么样的好处呢?它将算法的使用和算法本身分离,即将变化的具体算法封装了起来,降低了代码的耦合度,...原创 2018-09-14 16:17:37 · 1912 阅读 · 0 评论 -
状态模式的住店案例实战
状态模式可以有效的替换充满在程序中的 if else 语句:将不同条件下的行为封装在一个类里面,再给这些类一个统一的父类来约束他们。来看一下状态模式的角色组成:1) 使用环境(Context)角色:客户程序是通过它来满足自己的需求。它定义了客户程序需要的接口;并且维护一个具体状态角色的实例,这个实例来决定当前的状态。2) 状态(State)角色:定义一个接口以封装与使用环境角色的一个特定状...原创 2018-09-14 16:05:48 · 1432 阅读 · 1 评论 -
设计模式:策略和状态模式组合实战架构设计
原创 2018-07-31 11:37:03 · 436 阅读 · 0 评论 -
设计模式:责任链模式实战
原创 2018-07-31 11:40:56 · 307 阅读 · 1 评论 -
设计模式:适配模式图解实战
原创 2018-07-31 11:43:10 · 285 阅读 · 1 评论 -
设计模式:组合和迭代模式实战图解
原创 2018-07-31 11:51:01 · 322 阅读 · 0 评论 -
设计模式:观察者模式图解实战
原创 2018-07-31 11:54:07 · 636 阅读 · 0 评论 -
设计模式的顶层设计思想分析
我从通俗角度讲一下六大原则: 一是开闭原则(Open Close Principle),强调对扩展开放,对修改关闭。应用场景是当我们的代码需要不断修改时,不能去修改原有的代码,而是抽象出父类接口,修改子类即可。 二是里氏代换原则(Liskov Substitution Principle),强调是父类和子类的关系。应用场景是在定义时使用父类对象,而在运行时再关联子类类...原创 2018-09-28 13:37:10 · 1462 阅读 · 0 评论