【摘 要】 现时代,在系统的组建、管理过程中,多元化的需求,使得代码复用、流程复用被越来越关注,越来越需要,设计模式在这种环境下应运而生。本文探讨了在深化抽象体系的过程中,设计模式作为一种经验论与方法论,经过大量的实践检验与科学的分析、总结与整理,对系统的设计与管理能够起到很好的指导作用,它有效解耦了系统设计与管理间的强关联,从而实现了灵活的扩展与应用,保证了系统设计与管理的稳定性、可靠性、延续性。
【关键词】 设计 模式 系统 管理 抽象 复用
数据膨胀,系统以飞速发展,在系统组建的过程中,从面向过程的设计,到面向对象的设计及其后,越来越繁复的编码对编程效率、代码测试及品质控制,对抽象的内容和层次都有了越来越高的要求。
函数式的出现带来了代码复用的划时代进步,随后,复用编码、复用程序、复用设计的思路与理念的要求不断出现,同时,为了保证这些应用的高度复用与可靠,增加其可扩展与维护的空间与可能,缩小在其中变更时所产生的代价,设计模式应运而生。虽然设计模式本身并不作为一种硬性的指标与要求,但却如同构建大厦一般,能够充分借鉴前人的经验,简单方便地复用成功的设计和体系结构,并使新进的管理者能够快速理解和融入,从而构筑可靠的系统,稳固管理,形成全面稳定的系统设计架构和管理体系。从应用的角度看,设计模式作为一种经验论与方法论,以实践证明了其工程化、规范化整体系统框架的重要意义。
1 设计模式内涵
1.1 设计原则
面向对象的设计,遵循六个基本原则,分别是:开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成与聚合复用原则、最小知识原则。通过这些原则,保证了系统内的模块解耦与高度的代码复用:
(1) 开闭原则:强调了核心结构的简单与清晰思路,能够为其后的应用扩展奠定坚实的基础。
(2) 里氏代换原则:强调了抽象与细节的使用关系,在任何基类使用场景下,都可以替换为子类,这是继承与复用的基石。
(3)依赖倒转原则:定义了抽象与细节的关系:抽象不依赖于细节,细节应当依赖于抽象。在进行iop(面向接口的编程)时,通过高度的抽象与针对核心逻辑的明确思考,界定清楚管理边界和内在联系,并将泛化、衍生的过程交由细节实现。
(4)接口隔离原则:使模型、模块能够专注于专属的内容,充分解耦,以实现有效的组装。在产生变更时,不至于牵一动百,甚至影响不同服务对象的需求。
(5)合成与聚合复用原则:对象化关系的发展,使得继承关系被广泛使用,甚至到了滥用的地步。然后,基类的变更往往会影响到子类的诸多实现,抽象是一个过程,尤其是一个迭代化的过程,在形成最完美的抽象层次之前,过多的变更也会带来巨大的代价。因而,适当地将继承关系转化为聚合关系,从而降低耦合度,形成韧性扩展。从而使扩展与基础分离,使得系统变更波动只需要处于一个尽可能小的范围内,以保证系统的整体稳定,降低变更成本,并有利于控制风险。
(6)最小知识原则:对于无法界定的输入,不要给予响应,从而保证输出的可靠性。
1.2 要素
如之前所说,设计模式作为一种经验论、方法论,其本身是为了解决问题而存在的,因而,其主要因素就包含了四点:名称、问题、解决方案、效果。这本身就是作为一种设计思路而被倡导的基本要求。
1.3 模式
目前的设计模式主要被分为三种类型,分别是:创建型模式、结构型模式、行为型模式。
(1)创建型模式:主要用于对象创建,形成统一的对象接口,封装对象产生的各种条件。包含了:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
(2)结构型模式:主要用于处理类或对象的组合。包含了:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
(3)行为型模式:主要用于描述类或对象之间的交互及职责分配。包含了:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
2 设计模式的应用
一个系统,只有充分规范,并且具备足够的抽象层次,才能从思想上给管理者一个统筹的概念,在这样的基础上,无论是开发,还是运维管理都不容易脱离方
,不会落入一些无度、无规则的设计和管理行为中。
以设计模式为指导的系统设计,能够使代码间、模块间具备充分规范的设计接口,遵循清晰的模式结构;系统的运维管理,也同样可以借鉴这样的做法,使得每一个模块的管理都相对独立,尽可能地通过模式应用解耦管理的层次和水平,从而形成灵活的管理策略,使系统不致偏倚于某些特定的部分或者特定的人,从而为今后的开发设计,甚至运维管理埋下隐患。
2.1 系统设计
系统的整体设计是一个从下而上的抽象,从上而下的实现过程。
前面说到,设计模式本身是为了解决问题而产生的。问题的产生,就是通过需求分析进行界定的,通过需求分析对要解决的问题进行详细的剖析,弄清问题的范围、定义与要求,弄清解决办法中输入、输出的情况,弄清解决该问题最终要达到什么样的目的,从而明确“要做什么”。但是,需求分析也存在重大的困难点,例如:供需交流困难、需求动态化、后续影响复杂。这也造成了:在每个时期、每个阶段,甚至于不同的场景下,系统需求都会有所不同。要适应这种千变万化的需求,如果只是单靠传统过程式、函数式的设计思路与组建策略,无疑将使系统本身越来越臃肿,而管理上也被迫基于零散的需求而形成冗余的应用指导与文档堆积。
以广电系统所使用boss系统最核心的产品模型而论,丰富的产品线与高度抽象的产品、设备概念,即是最显而易见的建造者模式:产品包含名称、活动计划、价格计划、服务内容等重要因素,设备包含:名称、型号、价格计划等重要因素。在抽象化的产品与设备之上,再使用桥接模式,将二者联系起来,形成一个抽象化的结构,解除了抽象和实现之间固有的绑定关系,从而实现了在业务操作场景中,产品和设备在各自维度上可以沿各自的轨迹进行灵活扩展,解除了产品与设备之间的耦合关系,有效降低了不同产品与不同设备在配对时的复杂度。如果专注于每一个产品的实现,而不去进行充分的抽象与整理,那么,复杂的市场策略,在面对形形色色的产品与设备的组合要求时,将使得系统的设计和运作陷入一个困难的境地:高频度的产品上线将使开发不得不为每一个产品耗尽所有的心力,并且不断重复这样的过程;而每一个产品的管理,也变得单一而零散,系统的业务操作更无法合理、统一、有效地进行流转——为每一个单一产品生成一整个业务的操作链,那么使用者得有相当厚的手册指导每一项操作内容,并且不得不面对各种错误操作的后果。 通过备忘录模式,保留业务操作过程中的资源状态、产品状态、工单状态等,从而将这些资料进行充分备份,以保证业务操作过程中,在因意外中断而产生问题时,能够恢复到一个健康的历史场景中。
在任务或工作流过程中使用观察者模式,将已完成的任务或工单以主动的方式进行发布和通知给相应的观察者,例如:下一个处理环节,以使观察者能够及时获悉被观察者的状态变化,并作出响应,而使整体的处理流程通畅有序。
在服务开通的过程中,则使用命令模式。服务开通关联到不同的网元的管理实现,例如:广电系统中的标清、高清电视、宽带、互动等业务的开通、关断授权等等。通过命令模式,实现服务开通前后客户关系管理与网元管理的松耦合。
2.2 系统管理
在系统管理的范畴中主要包含:硬件,例如网络、服务器,与软件,例如需求分析、开发设计、测试、管理支持等;软件:需求分析、开发设计、测试。
保证每个管理成员职责部分的独立性,实现松耦合的管理与协作,有助于简化接口,发挥管理成员的专长,形成流程化的管理体系,同时,使系统的开发设计,尽可能地复用已有的成果,在系统的整个流水上,使每一块的结构都能形成规范与标准,从而应用于各个管理链中,将成员变更而带来的管理波动控制在最小的范围内。
通过适配器模式,使得管理组成员对外接口简化,并且使用善于沟通的人作为接口人,使得使用者和需求提出方能够更易于接受,同时,也充分发挥了善于专心管理与技术的成员的专业能力。
采用职责链模式,在线上支持与管理渠道中,对线上问题进行及时和专门的处理,让每一个问题能够及时进行传递。
使用观察者模式,在系统使用过程中的问题反馈上,将处理的结果进行迅速通知,使得处理结果能够及时反馈到提出者。
在系统管理中,应用设计模式的尝试,使
得整体职责在管理工作链中,能够被有效解耦,并尽可能在不同的管理范围中复用成员的职能,保证管理链的稳定与持续工作。
总而言之,设计模式是被反复使用、经过科学整理与分类的经验总结,它不仅有助于指导构建复杂系统,深化复用概念,保证系统的稳定持续,作为一种思路与理念,也同样能够用于各类的场景模型。
参考文献:
[1]gamma,e.等著,李英军等译.设计模式:可复用面向对象软件的基础[m].机械工业出版社,2000.
[2]freeman,e.等著,o’reilly taiwan公司译.head first设计模式[m].中国电力出版社,2007.
[3]程杰.大话设计模式[m].清华大学出版社,2007.