大家好!今天我正式发布我的OOP框架YOOP!该框架将帮助开发者更好地进行面向对象编程。
当前版本号:v1.1
介绍
该框架包含接口、抽象类、类。
接口Interface可以继承多个接口,可以定义方法、属性。
抽象类AClass可以继承多个接口、一个抽象类,可以定义构造函数、公有成员、私有成员、保护成员、静态成员、虚成员、抽象成员。
类Class可以继承多个接口、一个抽象类或类,可以定义构造函数、公有成员、私有成员、保护成员、静态成员、虚成员。
在子类中,可以使用this.base()来调用父类同名方法。也可以使用this.baseClass来访问父类的原型。
主要的语法规则
类Class:
- 创建实例时调用构造函数。
- 验证是否实现了接口的方法、属性,如果没有实现会抛出异常。
- 验证是否实现了父类的抽象成员,如果没有实现会抛出异常。
- 只能继承一个类(AClass或Class),否则抛出异常.
- 不能定义抽象成员,否则抛出异常。
抽象类AClass:
- 可以声明构造函数,供子类Class调用。
- 抽象类如果继承类Class,会抛出异常。
- 不用实现接口,可以交给子类Class实现。
- 不用实现父类抽象成员,可以交给子类Class实现。
- 只能继承一个抽象类AClass,否则抛出异常。
接口Interface:
- 接口只能继承接口,否则抛出异常。
使用YOOP
YOOP支持AMD、CMD、CommonJS规范,可在Sea.js、node.js中使用:
var yoop = require("./YOOP.js"); yoop.Class({});
也可以通过script标签在页面上直接引用
页面上引用script:
<script src="./YOOP.js"></script>
然后通过命名空间YYC来使用:
YYC.Class({});
用法
接口
定义接口
只有方法:
var A = YYC.Interface("method1", "method2");
只有属性:
var A = YYC.Interface([], ["attribute1", "attribute2"]);
既有方法又有属性:
var A = YYC.Interface(["method1", "method2"], ["attribute1", "attribute2"]);
继承接口
var A = YYC.Interface(["method1", "method2"],["attribute1", "attribute2"]); var B = YYC.Interface(A, "m1", "m2"); var C = YYC.Interface([A], ["m1", "m2"], ["a1", "a2"]); var D = YYC.Interface([A, B], ["m1", "m2"], ["a1", "a2"]);
抽象类
定义抽象类
var A = YYC.AClass({ Init: function () { //构造函数 }, Protected: { //保护成员 Abstract: { //保护抽象成员 }, Virtual: { //保护虚方法 }, P_proA: true, //保护属性 P_proM: function () { } //保护方法 }, Public: { //公有成员 Abstract: { //公有抽象成员 }, Virtual: { //公有虚方法 }, pubM: function () { }, //公有方法 pubA: 0 //公有属性 }, Private: { //私有成员 _priA: "", //私有属性 _priM: function () { } //私有方法 }, Abstract: { //公有抽象成员 }, Virtual: { //公有虚方法 } });