设计模式的分类
模式的分类是为了更容易的发现合适模式。按照规模对模式进行分类包括架构模式,设计模式和术语。架构模式定义了高层的关系和结构,并且以组建图来模块化。术语提供一个特定环境下的特定模式的实现,比如说,他们可以实现一个机制来避免软件中的内存泄漏。设计模式是处于架构模式和术语中间的部分,它们用类图来建模,用来表达模式中每个类的角色和相互的关系。
设计模式的另一个分类是基于目的。这个分类包括:创建型,结构型和行为型模式。创建型模式封装了具体类的实例化;结构型是模式把类和对象组成大的结构;行为模式描述了对象的通信模式。
Symbian中的设计模式
Symbian操作系统总体上来说是一个微内核 的系统,这种高度模块化设计的优势在于能够很容易根据需求的变更和新环境进行扩展和改善适应。微内核从扩展模块和用户部分中分离出了核心功能 。
MVC模式
MVC设计模式提供一种能够分别修改软件的不同模块的能力,该模式提高了软件的健壮性和复用性。MVC模式能够帮助软件的设计者使用面向对象的设计原则,比如:开闭原则。开闭原则的思想是开发者必须在分析和设计这些早期阶段来决定系统的那些部分是可以扩展的那些是固定不变的。根据OCP的原则,通过继承而不是修改存在的基类,增加新的代码和类来扩展设计。已经稳定的和完成测试的是关闭的并且是绝不会被修改的。
- Model:包含和操作程序中的数据
- View:定义数据模型向用户显示的方式,View传递接收到的命令和请求给controller
- Controller:定义用户接口对收到的命令和请求的处理
类MVC软件的组件
Model包含和操作数据,它最重要的部分是应用程序的数据结构。View是图形接口,它从Model读,并且获取需要显示的数据给用户。 Controller操作Model中的数据并更新View
为什么MVC如此重要
MVC可以使得开发者根据面向对象编程的基本原则来设计他们的应用程序。首先,OCP是基于这样的一个原则,开发者在实现之前必须决定应用程序的那些部分是可以扩展的哪些是不行的。设计阶段之后,代码的开发从一些基类开始,可以通过增加新的特别的类来扩展。MVC和OCP是一致的。
MVC的使用
在Symbian S60中,MVC的使用是基于Avkon的GUI框架 ,框架提供基类实现Model,View和Controller。这些类可以被应用程序设计者扩展。
Avkon的基类:
- CAknApplication,应用程序的基类
- CAknDocument,Modle的基类
- CAknAppUI,Controller的基类
View的父类AVkon没有提供,但是可以从CONE环境继承。
Adapter模式
Adapter是个非常常见的设计模式。它给软件的开发者提供了一种方式来适应需求的变更而不去改变原有的结构设计。这也是为什么Adatper模式常见于实现阶段而不是设计阶段。Adapter模式也被称为“Wrapper”是因为它把一些存在的功能包装到了新的环境中去。在设计可移植性应用程序时,Adapter是
最基本的。
Adapter可以通过对象或是类来实现。但是,SymbianOS对一个类的Adapter是不感兴趣的,因为它要求使用多重继承。 Adapter使用聚合而不是继承(由类Adapter使用)来控制adaptee的行为。客
户通过由target定义的接口来使用adapter。 Adapter把从客户端来的调用转换为相应的adaptee的方法。Adapter对于客户端是透明的。对象Adapter能够使一个Adapter类被所有的adoptee类的对象使用。Adapter也能够给所有的adaptee增加功能。但是,对象 Adapter是没有办法覆盖adaptee的行为的。
Observer模式
Observer定义了一个多个合作对象之间一个对多的依赖性。Observer把一个系统分成多个部分,当对象的状态发生变化的Observer会做出反应。在许多事件驱动的系统中,Observer被用于分离事件源和时间监视者。Observer通过把自己附属到对象中这种方式来让对象知道当它的状态发生变化时通知到那个Observer。Observer把自己注册到自己感兴趣的对象中去,一个对象可以有多个Observer,并且一个 Observer可以侦听多个对象。更新的方法可以包括一个标记,在多对多的关系里用来表明那额对象的状态改变了。
状态机模式
状态机模式的目的在于提供一个当内部状态变化的时候,改变自身行为可能性的实体。同时,可以通过修改状态转换来改变基于状态的行为和分开重用行为。