角色模式

Copyright © TeleManagement Forum 2013. All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to TM FORUM, except as needed for the purpose of developing any document or deliverable produced by a TM FORUM Collaboration Project Team (in which case the rules applicable to copyrights, as set forth in the TM FORUM IPR Policy, must be followed) or as required to translate it into languages other than English.

上图定义了一个交换机(Switch)和一个路由器(Router),二者作为物理设备(PhysicalDevice)的子类(继承方式)。交换机和路由器的基本区别是前者转发流量,后者路由并转发流量。但是对于一台具有路由功能的三层交换机如何处理呢?一种可能的方式是在上图中为交换机(Switch)创建一个子类Layer3Switch。但这是一个不好的方案,因为每当路由技术更新换代时,这个模型中的路由器(Router)和三层交换机(Layer3Switch)都随之需要更新;另外这种方案中的三层交换机与路由器并没有多大区别。如果出现了四层交换机(Layer4Switch),那么又如何为之建模呢?路由器、Layer3Switch和Layer4Switch的路由类型又如何区分呢?如何处理带有防火墙功能的路由器呢?类似的问题是很多的。可见,多重继承的方式并不能解决这类问题。

对于以上问题,我们可以采用一种更加优雅的方式解决——角色模式。

角色模式是增强模型可扩展性的基本方式。角色模式将一个实体的各种功能抽象为不同的对象,而不是将其功能嵌在实体本身中,例如角色模式可以将一个设备的不同功能抽象为不同的对象。

一个角色刻画了一个对象所能提供的功能。从SID的业务视图角度看,这种刻画指的是属性和关系;从SID系统视图看,这种刻画扩展为方法、约束和行为。

角色模式的好处是:

1、易于分别定义实体本身的行为与实体的功能而互不影响;

2、实体角色的改变不需要改变实体本身。

回到一开始讲到的例子,如果采用角色模式,我们不需要定义不不同的子类,而是为设备的不同功能创建不同的角色,这样就解决了同样的功能重复出现在不同设备上的混乱情况,例如可以将路由功能与路由器、三层交换机进行关联。如下图所示:

由于通信网技术的不断发展,继承方式不能很好地驾驭这些变化。如果将关键功能抽象为角色,则可以为现在和将来出现的设备统一建模,因此将设备角色(DeviceRole)定义为不同于设备(Device)的实体是一种可扩展的方式。这样只需要为设备角色(DeviceRole)创建不同的子类以表示不同的功能,通过组合相关的设备角色形成某个设备的功能,从而避免为设备(Device)创建子类。

角色模式的应用:资源配置

举一个MPLS VPN的例子,不管VPN的拓扑有多复杂,其设备基本上由3种角色的路由器构成:

1、    CE

2、    PE

3、    P

一个基本的VPN拓扑如下图所示:

上图显示了2条VPN,红色VPN通过骨干网连接了站点1和站点3,绿色VPN通过骨干网连接了站点2和站点4。这2条VPN共享了相同的网络。角色的概念可以用来标准化CE与PE的连接和转发配置。例如,为CE路由器定义一组策略,用于控制其如何连接不同类型的PE路由器。这些策略可以抽象为不同的角色,独立于任何特定的设备,从而能够减少冗余并实现重用。另外,运营商骨干网的核心由扮演P角色的路由器构成,由于这4个P路由器功能相同,其中1个路由器的配置模板可以用来配置其它3个P路由器。PE和CE的配置可以采用相同的方式。

TMF SID中的角色模式的更多相关文章

  1. 基于TMF SID的高可扩展性数据模型

    基于TMF SID的高可扩展性数据模型 前言 此文根据TMF SID规范撰写,欢迎大家提出建议和意见. TMF文档版权信息 Copyright © TeleManagement Forum 2013. ...

  2. TMF SID性能相关实体介绍

    TMF SID性能相关实体介绍 Copyright © TeleManagement Forum 2013. All Rights Reserved. This document and transl ...

  3. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)

    在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了“工厂模式”.“策略模式”.“状态模式”等.当然在重构时,有的地 ...

  4. angular中的MVVM模式

    在开始介绍angular原理之前,我们有必要先了解下mvvm模式在angular中运用.虽然在angular社区一直将angular统称为前端MVC框架,同时angular团队也称它为MVW(What ...

  5. JSP中使用的模式——JSP+Servlet+JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  6. Web前端开发中的MCRV模式(转)

    作者: izujian  来源: baiduux 摘要:针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,难以组织和维护,代码复用性.扩展性和适应性差等问题,本文尝试以MVC思想为 基础,结 ...

  7. 002-创建型-04-建造者模式(Builder)、JDK1.7源码中的建造者模式、Spring中的建造者模式

    一.概述 建造者模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象 ...

  8. 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式

    1. 前文汇总 「补课」进行时:设计模式系列 2. 从 LOL 中学习代理模式 我是一个很喜欢玩游戏的人,虽然平时玩游戏的时间并不多,但我也是一个忠实的 LOL 的爱好者,就是段位有点惨不忍睹,常年倔 ...

  9. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

随机推荐

  1. JAVAScript中DOM与BOM的差异分析

    JAVAScript 有三部分构成,ECMAScript,DOM和BOM,根据浏览器的不同,具体的表现形式也不尽相同.我们今天来谈一谈DOM和BOM这俩者之间的差异. 用百科上的来说: 1. DOM是 ...

  2. fastjson 格式化自定义选项

    QuoteFieldNames———-输出key时是否使用双引号,默认为true WriteMapNullValue——–是否输出值为null的字段,默认为false WriteNullNumberA ...

  3. HIVE- 大数据运维之hive管理

    我现在在一家公司负责大数据平台(CDH平台)的运维管理,最常遇见的问题我总结出来,并且继续在下面更新.希望方便自己以后trouble shooting以及方便各位同行解决问题与学习. 关于做运维有几个 ...

  4. CSS3特殊图形制作

    CSS3特殊图形制作 现在IE8+的浏览器都支持CSS3+HTML5了,IE8及以下的浏览器的浏览器也快告一段落了,大前端的时代来了.废话不多说,现在开始用CSS3画图 1.心型 //HTML < ...

  5. PL/SQL Developer 的 SQL 编辑窗口显示行号

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一直奇怪为什么 PL/SQL 6 系列的版本可以显示行号,为什么到了 7 .8 版本之后反而还不行了?而且我都已经设置了“显示行号”的呀. 如图: ...

  6. java:eclipse安装tomcat插件及配置tomcat

    我们都知道myeclipse自带tomat图标,而eclipse却没有,若想eclipse实现带有tomcat图标可以下载tomcat插件 tomcat插件下载地址:http://www.eclips ...

  7. 深度学习—池化、padding的理解

    1.池化层的理解 pooling池化的作用则体现在降采样:保留显著特征.降低特征维度,增大kernel的感受野.另外一点值得注意:pooling也可以提供一些旋转不变性. 池化层可对提取到的特征信息进 ...

  8. 51nod1428 活动安排问题 (贪心加暴力)

    1428 活动安排问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动 ...

  9. linux命令学习笔记(4):mkdir命令

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限, 并且指定的目录名不能是当前目录中已有的目录. .命令格式: mkdir [选项] 目录... .命令功 ...

  10. 【leetcode刷题笔记】Remove Nth Node From End of List

    Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...