My favorites | Sign in
Project Home Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
ObjectOritentedAndComponentArchitecture  

结合的jQuery易用性,将talentjs设计为一个面向对象的、组件化的框架,是本项目的设计思路。

jQuery的易用就不多说,这里想说一下,如何将面向对象的思想应用到js lib的开发上。

js已经提供了对面向对象开发的支持,通过new一个构造函数,可以得到一个类,通过给构造函数的prototype对象添加属性和方法,可以给所有该类的子类添加同样的属性和方法。但是这种继承的实现并不理想,talentjs通过一个extend方法,提供了一个方便、完备的继承方法。

谈到设计,就不得不提一下设计模式。下面介绍一下talentjs中用到的几个核心设计模式

Composite模式

熟悉设计模式的话,应该知道这是组合模式。Composite模式通过暴露一个接口来接触一组对象,并像操纵单个对象一个去操纵这一组对象。

Flyweight模式

享元模式,最主要的特征是分为外部状态和内部状态。核心对象Element提供了fly()方法来获取享元对象,当享元对象外部状态是一个dom,外部状态改变时,改变的仅仅是Element的dom属性。Flyweight模式在web前端组件开发上,得到广泛的应用,一个比较典型的应用是grid,一个grid有很多个cell,可能有上千个,每一个cell就是一个Element对象,如果new上千次Element的话,将会造成页面的资源被极大消耗,而通过Flyweight模式就可以得到解决,只要new一个Element就可以,选取不同的cell,每次改变的只是dom

Observable模式

观察者模式,组件通过实现Observable接口,从而得以提供一个统一的管理接口,在talentjs中,主要是为了实现统一管理事件而提供了观察者模式

组件化框架 ------稍后补上------

Powered by Google Project Hosting