对于客户端应用程序而言,单页应用程序(Single Page Application)是最常见的表现形式.有经验的开发人员往往会把一个View分解多个SubView.那么,如何在多个SubView之间 『共享数据』 是一个很棘手的事情.又因为ViewModel才是真正为View提供数据来源,所以本质上『共享数据』指的是多个ViewModel之间共享同一块数据控件. JavaScript中的原型链 谈到『共享』两字,脑海里跳出第一个印象就是『继承』.对吧,因为你是父母的孩子,所以理所当然你可以和父…
对于客户端应用程序而言,单页应用程序(Single Page Application)是最常见的表现形式.有经验的开发人员往往会把一个View分解多个SubView.那么,如何在多个SubView之间 『共享数据』 是一个很棘手的事情.又因为ViewModel才是真正为View提供数据来源,所以本质上『共享数据』指的是多个ViewModel之间共享同一块数据控件. JavaScript中的原型链 谈到『共享』两字,脑海里跳出第一个印象就是『继承』.对吧,因为你是父母的孩子,所以理所当然你可以和父…
> 对于一个View而言,本质上是一个MonoBehaviour.它本身就具备生命周期这个概念,比如,Awake,Start,Update,OnDestory等.这些是非常好的方法,可以让开发者在各个阶段去执行自定义的代码.但唯一遗憾的事,这些方法是有引擎调用,并且颗粒度不够细.本文将谈谈怎样构建View和ViewModel的生命周期. ### View的生命周期 ### **举个栗子,一个View的显示会有如下过程:** - 初始化操作 - 激活当前对象,SetActive(true) - 显…
当你开发一个客户端应用程序的时候,往往一个单页会包含很多子模块,在不同的平台下,这些子模块又被叫成子View(视图),或者子Component(组件).越是复杂的页面,被切割出来的子模块就越多,子模块越多,彼此之间需要同步的数据和状态就越频繁,即易产生耦合.那么如何保证在复杂业务情况下,各个子模块之间可以随意通信并保持弱耦合关系,这正是本文所讨论的. 耦合的产生 试想一下,你有这样一下需求,点击 View A中的按钮,View B也需要做出相应的改变. 这不是很简单吗.脑海里迅速出现两种解决方案…
MVVM回顾 经过上一篇文章的介绍,相信你对 MVVM的设计思想有所了解.MVVM的核心思想就是解耦,View与ViewModel应该感受不到彼此的存在.View只关心怎样渲染,而ViewModel只关心怎么处理逻辑,整个架构由数据进行驱动.不仅View与ViewModel彼此解耦,ViewModel与ViewModel之间也是解耦的.通过消息订阅-发布机制,解决了ViewModel之间的强依赖关系. 先回顾一下我们已完成的功能,Framework中最核心就是BindableProperty 类…
初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到很好的实现. MVVM 设计模式顾名思义,通过分离关注点,各司其职.通过 Data Binding 可达到数据的双向绑定,而命令 Command 更是将传统的 Code Behind 事件独立到 ViewModel 中. MVVM 设计模式在 WPF 中的实现 在WPF中,你会像如下这样去定义一个专…
『可复用』这个词相信大家都熟悉,通过『可复用』的组件,可以大大提高软件开发效率. 值得注意的事,当我们设计一个可复用的面向对象组件时,需要保证其独立性,也就是我们熟知的『高内聚,低耦合』原则. 组件化设计的思路 不管是开发客户端应用程序还是开发服务器端应用程序,『组件』这个词我们并不陌生.不管是在iOS中的xib,还是在AngularJS的Component,或者后端开发的 User Control,可复用的组件是面向对象开发的基础.所以在Unity 3D 框架设计时,组件化是核心的概念.那么如…
什么是 『动态数据集合』 ?简而言之,就是当集合添加.删除项目或者重置时,能提供一种通知机制,告诉UI动态更新界面.有经验的程序员脑海里迸出的第一个词就是 ObservableCollection.没错,它在WPF中盛行其道,通过它开发者可以很方便的达到动态更新界面.要在Unity 3D中使用ObservableCollection还是有些许困难的,因为Mono并不提供ObservableCollection类.但实际上,自己动手去构建一个『动态数据集合』也非难事,核心在于怎样去传播通知.这也是…
一谈到 『IoC』,有经验的程序员马上会联想到控制反转,将创建对象的责任反转给工厂.IoC是依赖注入 『DI』 的核心,大名鼎鼎的Spring框架就是一个非常卓越的的控制反转.依赖注入框架.遗憾的是,我们显然不能在Unity 3D中去使用Spring框架,但思想是相通的--IoC也好,控制反转也罢,本质上是一个工厂,或者又被称为容器,我们可以自己维护一个工厂来实现对对象的管理,这也是本文的核心内容. 工厂模式初探 工厂,顾名思义,就是生产对象的地方.如果之前没有接触过设计模式,你可能会疑惑,我直…
谈到 『Repository』 仓储模式,第一映像就是封装了对数据的访问和持久化.Repository 模式的理念核心是定义了一个规范,即接口『Interface』,在这个规范里面定义了访问以及持久化数据的行为.开发者只要对接口进行特定的实现就可以满足对不同存储介质的访问,比如存储在Database,File System,Cache等等.软件开发领域有非常多类似的想法,比如JDBC就是定义了一套规范,而具体的厂商MySql,Oracle根据此开发对应的驱动. Unity 3D中的Reposit…