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