写点什么

[架构师训练营第 1 期] 第三周学习总结

发布于: 2020 年 10 月 04 日

面向对象编程(OOP)的目标是:编写出高聚低耦的程序,从而使程序能够易于复用、扩展和维护。



为了实现这个目标,前辈们提出了几个程序设计的原则:

  • 开闭原则(OCP)

  • 依赖倒置原则(DIP)

  • 里式替换原则(LSP)

  • 单一职责原则(SRP)

  • 接口隔离原则(ISP)



为了贯彻这些原则,开发者们又发明了种种程序设计的模式,如:

  • 工厂模式

  • 单例模式

  • 适配器模式

  • 模板方法模式

  • 策略模式

  • 组合模式

  • 装饰器模式

  • 等等



凡是针对某一特定问题的可复用解决方案,并且满足解决方案的特征,就可被称为设计模式。

一个软件设计问题解决方案(设计模式)的特征(或一个设计模式的组成部分)包括:

  • 方案名称

  • 待解问题

  • 方案内容——组成设计的元素,包括类和对象及其关系、职责和合作

  • 结论——主要是对系统的影响,如伸缩性、扩展性、可移植性等



设计模式从功能上可以分为以下几类:

  • 创建模式——类的实例化过程的抽象,解决类如何实例化问题

  • 结构模式——类或对象组合过程的抽象,解决类或对象如何复用的问题

  • 行为模式——不同对象职责划分过程的抽象,解决对象如何高聚低耦的问题



设计模式从方式上可以分为以下几类:

  • 类模式——以继承的方式来实现模式(静态的)

  • 对象模式——以组合的方式来实现模式(动态的)



在实际工作中,我比较常用的有:工厂模式、模板方法模式、策略模式、单例模式、装饰器模式等。



比如,为了让我们的物联网应用平台支持对接不同类型的设备或资源,使用了工厂模式。以下是工厂模式中某个类型设备的类的实例化配置,其中 entry 即类的路径,其他项为管理和实例化参数等:



▲代码1:工厂模式相关应用代码



▲代码2:工厂模式相关应用代码

框架预置了一些开箱即用的资源基类,如标准设备基类,它基于一套自研的公开协议对接满足该协议的设备(称为标准设备)。对于标准设备(一般是公司自己生产的设备)可直接引用(如以上代码1病床分机)。而对于非标准设备(如第三方提供的设备)则可以继承设备基类,扩展对接非标设备的实现,再将实现类的路径引用到该设备类型配置的 entry 里(如以上代码2 LED)。

以下(代码3-1、3-2)是工厂模式的实现代码核心片段:



▲代码3-1:工厂模式实现核心代码片段



▲代码3-2:工厂模式实现核心代码片段

同时,为了使模块更易于扩展,使用了模板方法模式。即在模块的基类定义了一些模板方法,包括:init()start()stop()get listeners() 等,供具体类继承实现并覆盖,而基类则负责调用这些模板方法实现对模块的生命周期管理、自动注册子类所需的监听器等。

以下代码 4 是模板方法模式的实现代码片段,代码 5 是子类(设备管理器)在实现过程中覆盖了 get listeners() 方法,从而实现对相关事件的监听和处理:



▲代码4:工厂模式实现核心代码片段



▲代码5:工厂模式之下的应用代码片段



发布于: 2020 年 10 月 04 日阅读数: 53
用户头像

还未添加个人签名 2018.03.26 加入

还未添加个人简介

评论

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