架构师训练营第三周学习总结
设计模式的作用
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)。类图如下:
评论