随笔分类 - 设计模式
摘要:所谓模板方法模式,就是在一组方法结构一致,只有部分逻辑不一样时,使用抽象类制作一个逻辑模板,具体是实现类仅仅实现特殊逻辑就行了。类似科举制度八股文,文章结构相同,仅仅具体语句有差异,我们只需要按照八股文框架添加具体语句即可。 实际上,在Java设计模式应用——责任链模式中,我已经在业务执行,事务回滚
阅读全文
摘要:对于相同类型相同类型的输入输出,在不同场景下需要使用不同的逻辑处理,则可以使用策略模式。 比如排序算法有堆排序,快速排序,冒泡排序,选择排序等。为了保证排序效率,需要在不同场景下选择不同排序算法,这时候就建议使用策略模式。具体的算法就是具体的策略。 下面以一个简单的例子阐述策略模式的使用:
阅读全文
摘要:组合模式实际上是一种树形数据结构。以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类。 进一步抽象,把文件夹和文件都看做节点,于是一个文件夹就可以描述为一个节点类,包含若干个子节点。 我们看看组合模式的代码 测试类 在实际
阅读全文
摘要:备忘录模式主要用于存档。游戏中我们打boss前总会存档,如果打boss失败,则读取存档,重新挑战boss。 可以看出来,备忘录模式一般包括如下数据结构 1、 存档文件:用于恢复备份场景的必要数据; 2、 存档管理器:用于管理存档,包括存档的读写与展示; 3、 被存档的对象。 下面以射击游戏的存档来举
阅读全文
摘要:工厂模式有三种:简单工厂、工厂方法、抽象工厂 一、 抽象工厂 1、 一个可以生产多种产品的工厂; 2、 不改变工厂无法生产新的产品。 二、 工厂方法 1、 每个工厂只能生产一种产品; 2、 想要生产新产品只需要新建一个工厂即可; 3、 产品过多,可能导致工厂过多。 三、 抽象工厂 1、 抽象工厂可以
阅读全文
摘要:性能监控系统中,存在告警模块和报表模块,告警结果和报表结果都需要导出。 由于告警开发进度较快,已经实现了excel导出、csv导出、zip导出功能,现在报表需要excel导出、csv导出、pdf导出功能,该如何做呢? 显然,报表不会重复开发excel导出,csv导出代码,只需要增加pdf导出代码即可
阅读全文
摘要:性能管理系统中,数据产生后需要经过采集,汇聚,入库三个流程,用户才能查询使用。 采集可以是snmp采集,也可以是ems采集;汇聚可以使storm汇聚,也可以是spark汇聚;入库可以是hdfs入库,也可以是mppdb入库。 针对不同场景,我们可以灵活选择不同的采集,汇聚,入库方式。这种一个功能需要多
阅读全文
摘要:告警结果产生后,可能需要发送短信,邮件,故障管理系统。这些转发操作不应当影响告警生成入库,并且类似事件可能根据不同场景,客户习惯不同,此时,使用观察者模式则可以很好的适应上述场景。 观察者模式应当包括: 1、 观察事件; 2、 观察者接口; 3、 若干观察者; 4、 观察者注册管理中心; 下面,我们
阅读全文
摘要:storm引擎计算出一批中间告警结果,会发送一条kafka消息给告警入库服务,告警入库服务接收到kafka消息后读取中间告警文件,经过一系列处理后把最终告警存入mysql中。 实际上,中间告警结果可能有重复告警、错误告警、无用告警,告警入库服务会过滤,压缩中间告警,把用户关心的告警存入数据库。过滤的
阅读全文
摘要:生产一个产品,需要依次执行多个步骤,才能完成,那么是使用责任链模式则是极好的。 在性能告警模块开发过程中,创建一条告警规则需要执行阈值解析,中间表生成,流任务生成,规则入库,告警事件入库等诸多操作。如果把这些步骤糅合在一个类中,代码可读性及复杂度往往是灾难的,特别对于这么多步骤的事务性操作,更是力不
阅读全文

浙公网安备 33010602011771号