上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页
摘要: 定义了一系列的算法,并将每一个算法封装起来,使他们可以相互替换。 这就是策略模式的定义,转换下概念,定义了一系列的类,并将每一个类的实现封装起来,使他们可以随调用者使用。 凡是用到if - else的条件判断,都可以考虑考虑是否可以使用策略模式。 假如有这么一个场景,用户可以选择发短信,也可以选择发 阅读全文
posted @ 2022-04-04 12:38 伟衙内 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 先看下定义: 允许使用对象共享来有效地支持大量细粒度对象 提取关键词,共享对象,也就是说这个对象是共享的,那么也就是说是被继承或者实现的。 而一般继承或者实现都是应该有很多共性,所以被抽取出共性。 所以当程序中存在很多共性的地方,只是根据外部调用会有些变化时,那么可以考虑享元模式。 这种模式可以参考 阅读全文
posted @ 2022-04-04 10:57 伟衙内 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 顾名思义,组合模式允许以相同的方式处理单个对象和对象的组合体。 也就是说这个组合类可以处理单个的对象,也可以处理对象的集合。 单节点组合 如上图所示,定义了一个工厂,产生消息对外的一个类,用于外部调用。 定义一个抽象类(SenderService),用于规范一些操作。 SmsService这个类才是 阅读全文
posted @ 2022-04-04 10:54 伟衙内 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 外观模式就是提供一个统一的接口供外界调用,以降低内部逻辑复杂性。 如上图,还是拿目前最常用的模式来说,这个SmsServiceImpl里面在发送短信时,调用了一大堆其他内部逻辑。 要记录日志,要插入表数据,要调用外部接口发邮件等等。 如果要每次send(Sms)后都需要自己手动调用一次 LogSer 阅读全文
posted @ 2022-04-04 10:51 伟衙内 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 就说一个场景,如下图所示,有SmsService和MailService两个服务,分别负责发短信和发邮件。 同时有三个日志服务,负责记录日志等。 在发送短信或者邮件后,需要记录日志,那么此时需要记录DB,File,Server三种日志,而后续还 阅读全文
posted @ 2022-04-04 10:44 伟衙内 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 代理模式定义为提供一种方式以限制对被代理对象的访问控制。 也就是说不会让你直接接触到被代理对象,一切对外操作由代理对象来产生。 普通代理 如上图所示,就先来写一个代理类,SmsProxyService,以后发短信的操作就交给代理类来执行。 /** * @author lw * @date 2022/ 阅读全文
posted @ 2022-04-04 10:34 伟衙内 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 顾名思义,就是给以前的类装饰一下,增加一些其他功能呗。 还是上面SmsService这个类,这个类里面纯粹是发送短信,记录日志。 假如,这个类里面需要记录一张新表的日志呢?独属于项目组自己的日志。 方案A、修改jar包中代码,增加记录项目组自己的日志代码。(呵呵,会被打死吧) 方案B、把这个类调用时 阅读全文
posted @ 2022-04-04 10:30 伟衙内 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 适配器,也叫做包装器,顾名思义,就是设计一个转接头,用来连接两个无法正常对接的类。 有这么一个场景,项目之初有人写了SmsService用于发短信,记录日志,同时将这个打成jar包,用于给多个项目组使用。 /** * @author lw * @date 2022/3/28 0028 * @desc 阅读全文
posted @ 2022-04-04 10:28 伟衙内 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 单例模式定义为某个类在系统中只能有一个实例。 这也是我当初认为是最简单的设计模式。 常用写法 以前一般写单例模式都是写成如下代码, public class SmsInstance { private final static SmsInstance smsInstance = new SmsIns 阅读全文
posted @ 2022-04-04 10:25 伟衙内 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 定义是: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示 这句话很空泛,很抽象,看这句话基本看不懂。 但是可以从上面知道,构建可以创建不同表示,那就是说new一个对象出来,有不同的结果呗。 一般方式 那么下面就看这个类, /** * @author lw * @date 20 阅读全文
posted @ 2022-04-04 10:22 伟衙内 阅读(15) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页