当前位置: 首页 > news >正文

杭州网络科技网站建设公司建设网站的作用

杭州网络科技网站建设,公司建设网站的作用,用jsp做的网站源代码下载,wordpress 效率PureMVC框架解读 简易UI框架 1.UI框架核心方法 BaseUI会记录UI的名字#xff08;枚举#xff09;和Controller用来将UI与具体操作方法解耦UIManger利用字典记录所有的UI组件#xff0c;然后提供一些打开关闭UI的方法EventManager(事件系统)来实现模块与模块之间的交互,事件…PureMVC框架解读 简易UI框架 1.UI框架核心方法 BaseUI会记录UI的名字枚举和Controller用来将UI与具体操作方法解耦UIManger利用字典记录所有的UI组件然后提供一些打开关闭UI的方法EventManager(事件系统)来实现模块与模块之间的交互,事件系统也分很多种实现方式,都是观察者设计模型的典型应用,利用一个关键字注册多个方法然后在利用这个关键字激活调用已经住的方法。也是C#中委托的一种典型用法。广播形式、通知形式等。 2.UI框架拓展方法 ResourcesManager资源管理器,封装一些加载Resources资源的方法同步加载异步加载,加载并实例化等方式的方法。DataHelper(数据解析器),对Xml、Json(LitJson、JsonFX)、Protobuf等数据格式序列化与反序列化插件的进一步封装方便调用。Common Extension公共拓展组件利用泛型和拓展方法对Unity中的方法进行进一步的封装加快开发速度。Singleton(单例)NetworkManager,负责与后台数据的下载、上传。 3.简易UI框架的优缺点 容易上手使用针对C#新手相对容易理解只适合很小的项目拓展性很差逻辑会堆在MonoBehaviour的脚本下,效率降低 躺过上面这种简易UI框架的坑之后才会意识到一个大一点的项目或者是多人合作开发的项目一定要有一个较为牢靠的框架做为基础在Unity中有几种常见的框架也是从传统的经典矿建拓展过来的。PureMVCMVC框架,StrangeIOCMVCS框架,uFrame(MVVM框架)。 为了对比这三种常用框架的易上手程度和开发速度、理解难度我将用同一个案例用三种框架都编写一次实实在在的对比一下框架的区别之处得出最终的结果。 PureMVC框架: PureMVC优缺点 - 1.利用中介者代理者命令实现解耦使得Model、View、Controller之间耦合性降低,提升了部分代码的重用 - 2.View界面可以实现重用 - 3.Model数据可以实现重用 - 3.代码冗余量大,对于简单的功能都得创建View、Mediator、Command、FacadeProxyModel脚本 - 4.操作过程比较繁琐的流程Mediator中的代码会显得流程较为复杂难懂除非你很熟悉PureMVC执行原理 PureMVC特点 - 1.通知的传递都要经过装箱和拆箱的操作 - 2.命令/通知是以观察者模式实现命令/通知在观察者中利用反射获取方法并执行 - 3.没有Service可按照MVC的构造自行添加与网络通讯的这个模块 - 4.数据通过通知传递SendNotification只有一个object类型参数会感觉数据传输受限可以将数据组合成一个类型/结构传递或者是为Notification再拓展一个参数。 PureMVC Core Scripts // 核心文件 1.View.cs : IView.cs 1.字典记录已注册的中介者(key是中介者名字value是中介者接口)2.字典记录已注册的观察者(key是事件名称,value是观察者接口)3.提供注册/注销中介者和观察者的方法4.核心方法通知观察者的方法NotifyObervers5.实现View单例IView.cs接口规了View要实现的方法 2.Controller.cs : IController.cs 字典记录已注册的命令(key是命令的名称,value是继承命令类型(实现命令接口)的类型)记录IView接口,以此来执行View中的通知,IView在构造Controller时赋值的实现Controller单例提供注册、注销、执行命令的接口IController.cs接口规了View要实现的方法 3.Model.cs IModel.cs 字典记录已注册的Model代理(Proxy)(key是代理名称,value是代理类型接口)实现IModel的方法包括注册、注销、获取代理的方法实现Model单例IModel.cs接口规了View要实现的方法 在了解了核心代码的字段和方法之后我们应该对PureMVC框架有个大概的了解MVC三个脚本分别记录管理项目创建的所有的视图控制器和数据模块,然后PureMVC框架利用几种典型的设计模式解除了三个模块之间的耦合使得View和Model的代码重用性提高,下面我们简单的讲解一下涉及到的设计模式。在这里推荐一本书《大话设计模式》,不了解的同学可以去学习一下。 设计模式 代理模式 为其他对象提供一种代理以控制对这个对象的访问。 使用在PureMVC中的使用代理模式在PureMVC中隔离了数据与其他系统的直接交互都通过数据的代理类来进行操作因为代理类又是继承至Notifier的所以Proxy也可以通过Notifier.IFacade访问到View和Controller有效的隔离了数据类与其他类的耦合使得数据类的复用性提升。这样数据类中的数据也可以由策划来用工具生成使得开发更加的方便。 - 外观模式 为子系统中的一组接口提供一个一致的界面此模式定义了一个高层接口这个模式使得子系统更加容易使用完美体现依赖倒置原则和迪米特法则。 使用外观模式可使子系统之间的依赖降低。 可以为旧的子系统设立一个Facade类然后用Facade类去与新的系统交互降低旧系统对新系统的依赖和产生复杂的关系 使用在PureMVC中利用外观模式编写的Facade类是整个MVC框架对外的主要接口在Facade类中记录了View、Model、COntroller并且实现了单例,它几乎拥有MVC核心类中的所有对外接口是一个典型的高层接口。 观察者模式 是一种一对多的依赖关系让多个观察者对象同事监听一个主题对象这个主题对象发生变化时会通知所有观察者对象使他们能够自动更新自己。 使用在PureMVC框架中利用观察者模式在中介者类的构造函数中给中介者注册对应UI事件之后当UI触发事件时中介者会通过View再把通知下发给观察者View中记录了每一个事件对应的观察者的字典对观察者进行遍历然后执行通知中的具体事件这里在事件通知时将类型装箱为object类型在观察者中又通过拆箱为具体类型利用反射构造方法实例执行来执行通知的事件通知的事件在构造中介者时通过重写ListNotificationInterresets方法实现添加。 PureMVC中命令模式实现也是通过发送通知让观察者执行通知调用Controller中的ExecuteCommand来触发的命令。 中介者模式 用一个中介对象来封装一系列的对象交互。中介者使各个对象之间不需要显示的互相引用从而使其耦合松散而且可以独立的改变它们之间的交互。 中介者的优缺点都很明显优点是它减少了各个具体的类之间的耦合使得可以独立地改变和复用各个类型。缺点是中介者的控制会随着逻辑复杂而更加复杂这会使得中介者承担过多的任务。 使用在PureMVC框架中利用中介者模式有效的隔离了View层与Controller和Model层的耦合View通过持有的数据代理就可以有效的执行操作和数据处理。 命令模式 将一个请求封装为一个对象(即我们创建的Command对象从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志以及支持可撤销的操作。 抽象命令Command定义命令的接口声明执行的方法。 具体命令ConcreteCommand具体命令实现要执行的方法它通常是“虚”的实现通常会有接收者并调用接收者的功能来完成命令要执行的操作。 接收者Receiver真正执行命令的对象。任何类都可能成为一个接收者只要能实现命令要求实现的相应功能。 调用者Invoker要求命令对象执行请求通常会持有命令对象可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方也就是说相当于使用命令对象的入口。 客户端Client命令由客户端来创建并设置命令的接收者。 使用 SimpleCommand和MarcoCommand继承ICommand接口,实现Execute方法。在代码中调用SendNotification(命令的名字)然后通知会在View.NotifyObserver()方法中通知观察者观察者通过反射获取方法然后执行Controller中的ExecuteCommandExecuteCommand中又会从字典中获取命令对应的类型然后调用Execute执行重写的命令实现解耦。 单例模式 单例模式是最常用的一种设计模式单例见名知意就是一个类只有一个实例。 单例模式提供一个全局的访问点是的程序的开发变得更加的灵活但是单例类的增多也会导致代码过度耦合降低复用与维护。 使用在PureMVC中Facade、View、Model、Controller都实现了单例模式使得批次访问更加的方便并加以volatile关键词volatile多用于多线程的环境当一个变量定义为volatile时读取这个变量的值时候每次都是从momery里面读取而不是从cache读。这样做是为了保证读取该变量的信息都是最新的而无论其他线程如何更新这个变量提供互相调用的接口。 PureMVC案例演示 案例内容实现一个迷你餐厅游戏,有顾客、服务员、厨师、菜单、订单,实现餐厅流程的模拟 案例效果 案例讲解: 核心案例 以顾客为例 View与Mediator ClientMediator记录ClientView变量Mediator还记录ClientProxyClientProxy中记录了ClientItem数据。ClientMediator与 ClientView的挂接我们通过一个命令来启动在StratUpCommand中对注册Mediator类型为ClientMediator参数为对应的ClientView这样Mediator中介持有View视图,中介在注册时执行OnRegister方法会获取到ClientProxy的实例通过ClientProxy给View注入数据使得View可以显示数据。在Mediator中还会重写ListNotificationInterests给中介记录对应的通知名称,和HandleNotification方法来执行具体的通知内容。 public class ClientMediator : Mediator {private ClientProxy clientProxy null;public new const string NAME ClientMediator;private ClientView View{get { return (ClientView)ViewComponent; }} public ClientMediator( ClientView view ){//注册视图中要执行的通知//比如点击按钮执行点菜通知}public override void OnRegister(){base.OnRegister();clientProxy Facade.RetrieveProxy(ClientProxy.NAME) as ClientProxy;if(null clientProxy)throw new Exception(获取 ClientProxy.NAME 代理失败);//更新视图内容}public override IListstring ListNotificationInterests(){IListstring notifications new Liststring();//添加要执行的事件名称notifications.Add(Name);return notifications;}public override void HandleNotification(INotification notification){switch(notification.Name){case Name://todo 执行具体View方法break;}} } Model与Proxy Model记录数据 Proxy为数据对外的代理避免了数据直接对外而造成Model中方法过多使得复用性降低,Model数据的获取在Proxy中可以从数据库读取也可以从json或者Protobuf中读取。但是因为Proxy是继承至Notifier的所以Proxy可以对外发送通知但是它没法接收通知。比如我们从数据库抓到数据之后就可以通过通知将数据推送给视图。 public class ClientProxy : Proxy {public new const string NAME ClientProxy;public IListClientItem Clients{get { return (IListClientItem)base.Data; }}public ClientProxy() : base(NAME , new ListClientItem()){//构造ClientItem//或者从数据抓取//或者解析文件流数据//todo SendNotification(通知视图);}public void AddClient( ClientItem item ){}public void DeleteClient( ClientItem item ){}public void UpdateClient( ClientItem item ) {} } Controller与Command Command继承至ICommand之后一个方法Execute,在子类中重写具体的命令内容主要用于程序启动应用程序业务逻辑在这里实现。 Controller是所有命令的掌管者命令的执行的入口在Contoller.ExecuteCommand方法中,是由View中NotifyObserver方法激活。 internal class StartUpCommand : SimpleCommand {public override void Execute(INotification notification){//注册代理//注册中介 注册中介会激活Mediator.OnRegister通过代理把数据注入视图} } Mini餐厅中实现了顾客与服务员的逻辑比如拿到菜单点菜上菜付款,服务员与厨师之间又实现了通知厨师做菜厨师通知上菜等业务逻辑,这些逻辑我们都可以通过PureMVC中的通知机制来实现。 比如 顾客通知服务员点菜SendNotification(“通知服务员点菜”) 服务员收到通知拿着菜单给顾客SendNotification(“上菜单”)。抽象出所有的事件流程,在EventDefines中定义名称 所以大概分为这么几个模块去实现每个模块都有一个View和Mediator组合,Model和Proxy组合再统一依靠StartUpCommand与Controller启动模块与模块之间通过Notification来实现使得代码看起架构清晰不杂乱。详细设计请看代码。 小结 PureMVC框架的解读今天就先讲到这里通过上述的描述希望大家能对PureMVC框架有一个大概的了解PureMVC框架是一种很经典的框架在Unity之后也是较为常用的一种框架我们从Github哪里就可以得知有多少个PureMVC语言的版本。在下一篇PureMVC解读中我将对其中的通知模式和命令模式做一个详细的解读去更深的了解PureMVC框架通知机制执行的原理,如果你对接口不太理解对设计模式不太理解或是对反射毫无概念那你要先好好补一补这方面的姿势哟因为后续我会更新StrangeIOC和uFrame的使用和工作机制以及网上较为流行的luaFramework。 Unity自定义UI组件系列 Unity自定义UI组件(六)日历、日期拾取器Unity自定义组件之(五) 目录树 UITreeUnity自定义UI组件(四)双击按钮、长按按钮Unity自定义UI组件(三)饼图篇Unity自定义UI组件(二)函数图篇(下)Unity自定义UI组件(一)函数图篇(上) 分享地址 Github https://github.com/ll4080333/UnityCodesCSDN http://blog.csdn.net/qq_29579137 如果你想了解unity项目架构或者是UGUI架构与拓展等更多知识欢迎关注我的博客我会持续更新,支持一下我这个博客新手。如果以上文章对你有帮助点个赞让更多的人看到这篇文章我们一起学习。如果有什么指点的地方欢迎在评论区留言秒回复。
http://www.sczhlp.com/news/227745/

相关文章:

  • 企业网站设计师网络运营商怎么联系
  • ps做图 游戏下载网站南京做网站yuanmus
  • 巴中做网站公司编辑网站绑定
  • 烟台做网站推广的公司哪家好做的网站上更改内容改怎么
  • 网站开发的技术问题WordPress主题Adams
  • 企业网站是否可以做淘宝客武邑县网站建设公司
  • 绍兴外贸网站建设打广告的平台
  • 网站有哪些分类网站服务器可以为网络客户端提供文档
  • 网站维护机构龙岗网络营销
  • 做类似360手赚那样的网站辽阳网站推广
  • 男女做暧视频网站免费android电影网站开发
  • 东莞网站建设在哪里陕西网站开发联系方式
  • 建设租车网站宣传片拍摄合同模板
  • 那里可以做工作室做网站h5界面设计
  • 如何让做的网站自动适应浏览器网站托管团队
  • 网站开发是否属于技术合同制作国外网站
  • 长春高档网站建设网站建设:宏智网络科技
  • 深圳做网站哪家公司好长沙推广网络营销公司
  • 成年做羞羞的视频网站spacewordpress设置菜单密码
  • 那家公司做网站比较好免费做网站平台
  • 个人是否可以做网站百度怎样可以搜到自己的网站
  • 网站做留言板怎么清空源码建设网站域名有了还要什么
  • 广告公司会建设网站吗建设银行信用卡网站多少
  • 环保网站建设的目的网站如何做标题优化
  • 网站进度条特效建筑网址大全
  • 在线培训网站怎么做企业所得税的优惠政策
  • 个人网站首页导航栏ps制作教程周口seo推广
  • wordpress小说主题网站网站 数据库选择
  • 如何分析网站的设计电脑什么软件做短视频网站
  • 动漫网站设计方案网站建设分为那几个模块