架构师训练营第三周学习总结

用户头像
邓昀垚
关注
发布于: 2020 年 09 月 29 日

设计模式的作用

OOD的目标是高内聚低耦合,在此之上就产生出各种OOD的原则,包括OCP、DIP、LIP、SRP、ISP等。

基于OOD原则人们总结出了一系列的设计模式,这些设计模式更具体的指导我们进行编程开发。基于各种设计模式可以开发各种框架,最终面向框架开发各种应用程序。

什么是设计模式

设计模式是一种可重用的解决方案

常用设计模式

单例模式

保证一个类只产生一个实例,原因:1.节省资源(性能需求)、2.统一控制(业务需求)

单例模式的两种实现方式

适配器模式

解决问题:系统所需要的类与现有的类的接口不同

两种方式:

类适配:通过集成

对象适配:通过组合

模板方法

基类负责算法的轮廓和骨架,子类负责具体的实现。

修饰器模式

允许向一个现有的对象添加新的功能,同时又不改变其结构。

修饰类和被修饰类实现同一接口

依赖注入

A依赖B对象,A不需要主动创建B对象,B对象有外部创建,并注入到A对象中

MVC模式

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式

MVC实现模型和视图的分离

物联网网关的设计

谈一谈最近开发的物联网网关中用到的设计原则和设计模式。

网关的作用:

1.定时采集现场数据上报物联网平台(采集)

2.收到物联网平台发送的消息并对现场设备进行控制(控制)

由于现场的协议众多, 有基于HTTP数据接口的,有基于OPC协议的,还有基于IEC104电力规约的。如果现场增加新的协议,则不得不修改代码并重新发布程序。故在设计网关程序时考虑采用基于插件的热插拔模式,而这个插件我们称之为IoT驱动(IoTTDriver)。

参考Spring的依赖注入模式,网关应该只依赖于接口(即驱动规范),而不依赖于驱动的具体实现。基于网关驱动规范可以实现HttpIoTDriver,OPCIotDriver以及IEC104IoTDriver。这些插件独立打成jar包放到drivers目录下,网关启动时读取drivers下的驱动jar包,通过类的动态加载机制加载驱动。具体实现时采用了JDK的SPI(Servier Provider Interface)机制。

基于热插拔驱动的网关设计体现了依赖倒置原则(DIP),采用了依赖注入的设计模式。同时网关驱动的设计采用了接口分离原则,将驱动的关注点分离为采集器和控制器,剥离出采集器接口(IoTCollector)和控制器接口(IoTController)。类图如下:



用户头像

邓昀垚

关注

还未添加个人签名 2018.06.04 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三周学习总结