`
aaapei
  • 浏览: 9429 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

puremvc中的设计模式

阅读更多
pureMVC是一个纯MVC结构,purvMVC中负责数据层(M),视图层(V),和控制层(C)分布是Model类,View类,和Control类

Model类负责操作控制Proxy集合(注册/移除Proxy实例),View类负责操作Mediator集合(依然是注册/移除Mediator实例),Control类维护Command类

Model类,View类与Control类不和框架外的类进行通信,三者作为成员变量聚合在Facade类下(设计模式:聚合),

由Facade类统一于外界进行通信(设计模式:门面模式),Facade类使外部程序在不需要了解pureMVC的内部结构的情况下,而与pureMVC进行交互

//Facade
public void registerCommand( String noteName, Class commandClassRef )
{
	//Facade类的registerCommand,函数内部调用了Control类的registerCommand
	this.controller.registerCommand( noteName, commandClassRef );
}


Facade类在pureMVC中只有一个实例(设计模式:单例模式),相应的,由于Model类,View类和Control类是Facade的一个成员变量,
Model,View和Control在pureMVC框架中也只存在一个实例
public synchronized static Facade getInstance( )
{
	//懒汉式单例
	if (instance == null) {
		try {
			instance = new Facade();
		} catch (Exception e) {
		}
	}
	return instance;
}

前面说过,View类负责注册/移除mediator实例,View在注册Mediator时,首先调用Mediator的listNotificationInterests方法,获得该Mediator感兴趣的Notification(命令通知),
然后实例化一个Observer对象,进行注册,那么这时框架在接受到一个命令通知的时候,就会通知了相应的Observer类
public void registerMediator( final IMediator mediator )
	{
		// Register the Mediator for retrieval by name
		this.mediatorMap.put(mediator.getMediatorName(), mediator);

		//获得Mediator感兴趣的事件
		String[] noteInterests = mediator.listNotificationInterests();
		if (noteInterests.length == 0) {
			return;
		}

		// 创建一个匿名类,实现onNotification方法,告诉Observer(观察
            //  者),对于Mediator感兴趣的事件,应该统一调用mediator.handleNotification
		IFunction function = new IFunction()
		{
			public void onNotification( INotification notification )
			{
				mediator.handleNotification(notification);
			}
		};

		// Create Observer
		Observer observer = new Observer(function, mediator);

		// Register Mediator as Observer for its list of Notification interests
		for (int i = 0; i < noteInterests.length; i++) {
			registerObserver(noteInterests[i], observer);
		}
	}

在这里,应用了观察者模式,View是一个主题,Oberserver类是一个观察者,Notication是一个通知
registerObserver这个方法是将observer实例放在在一张hashtable中,这个hashtable用来保存通知和Observer的映射关系,它的key是通知名,value是一个Observer的集合类Observers类

在Control中,有一个类似的注册方法:registerCommand,它用来维护Notification的映射关系,使用的仍然是观察者模式
//notificationName:通知名
	//commandClassRef:Command类
	public void registerCommand( String notificationName, Class commandClassRef )
	{
		if (null != this.commandMap.put( notificationName, commandClassRef )) return;
		this.view.registerObserver( notificationName, new Observer(
		new IFunction()
		{//创建匿名类,实现onNotification方法
			public void onNotification( INotification notification )
			{
				//executeCommand方法从根据notificationName实例化一个Command,执行这个Command类的execute,
				//所以说Command它是无状态,它只有被需要的时候才会被创建
				executeCommand( notification );
			}
		}, this ) );
	}


在Proxy类,Mediator类中在发送通知时sendNotification时,最后都会调用View类notifyObservers
	public void notifyObservers( INotification note )
	{
		Observers observers = (Observers) this.observerMap
				.get(note.getName());
		if (observers != null) {
		//notifyObservers方法循环调用每一个Observer的onNotification,对应
              //Mediator注册的方法,最终调用Mediator.handleNotification进行处理,
            //对于Command,则最终调用调用Command.execute
			observers.notifyObservers(note);
		}
	}

1
2
分享到:
评论
1 楼 shansun123 2009-05-24  
puremvc用在其他语言上还不错吧,Java有很多健壮性很好的框架了。我胡说的啊。。错了别见怪。

相关推荐

    PureMVC 中文版

    而PureMVC作为一个框架,为Flex应用程序提供了模型-视图-控制器(Model-View-Controller,MVC)的设计模式实现,帮助开发者遵循良好的软件工程原则,使得复杂的Flex项目管理变得更为有序。 标签 "PureMVC" 进一步...

    PureMVC中文教程

    PureMVC是一个开源的、轻量级的、跨平台的MVC(Model-View-Controller)设计模式框架,它提供了一种组织和管理应用程序结构的方式。 在描述中提到了一个博客链接,虽然具体内容未给出,但可以推测这篇博客可能提供...

    cocoscreator使用puremvc

    PureMVC遵循模型-视图-控制器(Model-View-Controller)设计模式,通过将业务逻辑、用户界面和数据分离,提高了代码的组织结构和复用性。 1. **模型(Model)**:模型层负责管理应用程序的数据和业务逻辑。在PureMVC...

    qt版本pureMVC

    PureMVC是一个轻量级的、跨平台的、多线程的框架,它遵循MVC设计模式,用于简化应用的架构。MVC模式将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),各自负责处理数据、显示用户...

    pureMVC_AS3

    **MVC设计模式** MVC模式是软件工程中的一种架构模式,将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。在PureMVC中,这三者都由特定的类来实现: 1. **模型(Model)**:负责...

    PureMVC 各种例子以及中文文档

    该框架的设计灵感来源于经典的MVC设计模式,旨在简化开发过程,提高代码的可维护性和可扩展性。 标题中提到的"PureMVC各种例子"是指PureMVC框架提供的一系列示例项目,这些例子可以帮助开发者快速理解如何在实际...

    puremvc实例+中文文档

    PureMVC是基于经典的MVC设计模式的,它将应用程序的数据(模型Model)、用户界面(视图View)和业务逻辑(控制器Controller)分离,使得代码结构清晰,易于维护和扩展。在PureMVC中,每个组件都有其特定的角色和职责...

    pureMVC架构详细讲解

    4. **通知(Notifications)**:PureMVC中的通信机制是基于观察者模式的Notification。任何对象都可以发布、订阅和广播Notification。这种设计允许组件之间松散耦合,增强了系统的可扩展性和可维护性。 5. **结构...

    PureMVC总结(附Hello World含PureMVC源码代码和文档)

    这个框架是基于Model-View-Controller(MVC)设计模式的,它提供了一种结构化的解决方案,使得开发者可以更有效地组织和管理应用程序的组件。 在PureMVC中,MVC的三个主要组成部分被抽象为类: 1. **Model**(模型...

    PureMVC C#框架

    PureMVC C#框架是一种基于模型-视图-控制器(MVC)设计模式的轻量级应用框架,专为C#编程语言设计。这个框架旨在提高软件开发的组织性和可维护性,通过分离业务逻辑、用户界面和应用程序数据,使得开发者能够更高效...

    pureMVC资料包

    通过阅读这些文档,开发者可以学习如何在实际项目中有效地应用PureMVC,理解其工作原理,以及如何与其他设计模式和最佳实践结合。 PureMVC的特性包括: 1. **模块化**:PureMVC提供了一种方式来组织应用程序为多个...

    PureMVC_study

    PureMVC是一款轻量级的框架,主要应用于Flex和AS3开发,它基于经典的Model-View-Controller(MVC)设计模式,为开发者提供了一种组织代码、解耦组件的强大工具。PureMVC的核心理念是通过分离业务逻辑、用户界面和...

    基于PureMVC框架实现的Qt的一个例子

    PureMVC框架引入了命令模式、观察者模式和代理模式等设计模式,使得MVC模式在实际应用中更加灵活和强大: 1. **命令模式**:将操作封装为命令对象,便于管理和复用。当收到事件通知时,调度中心会根据事件类型执行...

    Unity 专用 pureMVC

    在Unity中,这些概念被转化为具体的类和接口,使得开发者可以遵循MVC设计模式来编写代码。 1. 模型(Model)层:这是应用的数据层,负责存储和管理业务数据。在Unity中,模型类通常继承自PureMVC的`IProxy`接口,...

    PureMVC.zip

    PureMVC的核心概念是模型-视图-控制器(Model-View-Controller,MVC)设计模式,这是一种软件设计模式,将应用程序分为三个相互协作的部分:模型负责管理数据,视图负责显示数据,而控制器则处理用户交互并协调模型...

    PureMVC_CSharp.zip_csharp_pureMVC_pureMVC C_pureMVC C#_疯铮铮

    PureMVC是一个开源的、轻量级的框架,主要用于构建多层应用架构,它遵循了经典的Model-View-Controller(MVC)设计模式。在C#版本中,PureMVC为开发者提供了一种规范化的、可扩展的方式来组织代码,使得项目更易于...

    PureMvc实例 PureMvc第一个实例

    它遵循Model-View-Controller(MVC)设计模式,并提供了一种标准化的方式来组织和协调应用程序的各个部分。在这个名为"MyFirstPureMvc"的压缩包中,你将找到一个使用PureMvc开发的Adobe AIR项目的完整实例,这将帮助...

    pureMVC源代码

    纯MVC(PureMVC)是一个轻量级的框架,用于构建基于模型-视图-控制器(Model-View-Controller)设计模式的应用程序。这个框架最初是为ActionScript编程语言设计的,但后来被移植到了多种其他编程语言中,包括Java、...

    pureMVC中英文版API附带一个简单例子

    通过深入理解PureMVC的设计理念和实现方式,开发者能够更好地组织代码,提高开发效率,同时利用其跨平台的特性,可以在多个项目中复用已有的架构和组件,降低开发成本。在实际项目中,PureMVC能够帮助你构建出清晰、...

    puremvc官方手册中英文版

    它遵循MVC设计模式,将应用分为Model(模型)、View(视图)和Controller(控制器)三个核心部分。 2. **Model层**:在PureMVC中,Model层负责管理应用程序的数据。它包含一组名为Proxy的类,这些类持有和操作数据...

Global site tag (gtag.js) - Google Analytics