• [Architecture Pattern] Device Projection (上)


    动机 :

    开发实时系统的时候,常常需要建立一组对象,用来映像远程设备。
    透过这组对象呈现远程设备的状态、通知。
    使用这组对象封装远程设备的操作、管理。

    但在映像远程设备提供上述功能之前。
    还需要提供探索远程设备的功能,建立远程设备列表。
    这样才能完整的提供服务。

    本文介绍一个『Device Projection 模式』,
    定义对象之间的职责跟互动,用来封装映射远程设备所需要提供的功能。
    让开发人员在需要实做相关功能时,能有一个参考的架构。

    结构 :

    下图是这个模式的示意图,整个看起来有点复杂。
    我们将图拆解开来说明,会比较方便了解。

    Device相关对象 :
    首先是Device相关对象,这组对象主要是提供下列的功能:
    -透过这组对象呈现远程设备的状态、通知。
    -使用这组对象封装远程设备的操作、管理。

    主要的参与者有:
    IDeviceSketch
    -封装远程设备的标识属性的接口。
    -以网络联机的设备来说,IDeviceSketch的标识属性,可能采用IP当作标识属性。

    IDeviceControl
    -在呼叫启动方法之后,主动提供实时信息、封装操作的接口,是Device专用的主动式对象。
    -以网络联机的设备来说,IDeviceControl提供设备联机状态、远程控制指令等等。

    Device
    -实际提供给外部模块使用的对象。
    -封装转接 IDeviceControl、IDeviceSketch所提供的属性跟方法。
    -并且接受 额外IDeviceSketch当作属性来源,更新Device属性数据。

    另外我们也可以发现到主要参与的对象,都实做了INotifyPropertyChanged接口。
    这是一个包含在System.ComponentModel内的接口,主要用来提供属性质变更的事件通知。
    『Device Projection 模式』使用这个接口,来通知外部模块属性质变更。

    透过下面的图片说明,可以了解Device相关对象之间的互动流程。

    DeviceManager相关对象 :
    再来看看DeviceManager相关对象,这组对象主要是提供下列的功能:
    -探索远程设备的功能,建立远程设备列表。

    主要的参与者有:
    IDeviceSketchExplorer
    -在呼叫启动方法之后,主动提供探索远程设备的接口,是DeviceManager专用的主动式对象。
    -当探索到新的远程设备加入系统时,建立新的IDeviceSketch并且发出事件通知。
    -当探索到旧的远程设备离开系统时,建立新的IDeviceSketch并且发出事件通知。

    IDeviceFactory
    -这个接口主要是封装建立Device与更新Device的功能,将相关的相依对象从系统里切割。
    -并且也负责了Device所需要的IDeviceControl接口的建立,将相关的相依对象从系统里切割。

    DeviceCollection
    -模式内部Device对象实际存放的集合对象。
    -除了提供模式内部存取之外,也开放给外部模块使用。

    DeviceManager
    -主要提供模式功能的对象。
    -接受IDeviceSketchExplorer发出的事件,新增修改删除DeviceCollection的内容。
    -使用IDeviceFactory,建立、更新Device对象。
    -作为整个模块的Host,开放DeviceCollection属性提供外部模块使用。
    -当有远程设备加入或移出系统时,发出事件通知。

    透过下面的图片说明,可以了解DeviceManager相关对象之间的互动流程。

    待续...

  • 相关阅读:
    poj3268(Silver Cow Party)最短路
    关于Phaser
    关于StampedLock
    关于AQS
    关于Exechanger
    关于Semaphore
    关于CyclicBarrier
    关于CountDownLatch
    关于BlockingQueue
    关于ThreandLocal
  • 原文地址:https://www.cnblogs.com/clark159/p/2330785.html
Copyright © 2020-2023  润新知