大家好!今天我正式发布我的OOP框架YOOP!该框架将帮助开发者更好地进行面向对象编程。

当前版本号:v1.1

GitHub下载地址

介绍

该框架包含接口、抽象类、类。

接口Interface可以继承多个接口,可以定义方法、属性。

抽象类AClass可以继承多个接口、一个抽象类,可以定义构造函数、公有成员、私有成员、保护成员、静态成员、虚成员、抽象成员。

类Class可以继承多个接口、一个抽象类或类,可以定义构造函数、公有成员、私有成员、保护成员、静态成员、虚成员。 

在子类中,可以使用this.base()来调用父类同名方法。也可以使用this.baseClass来访问父类的原型。

主要的语法规则

类Class:

  1. 创建实例时调用构造函数。
  2. 验证是否实现了接口的方法、属性,如果没有实现会抛出异常。
  3. 验证是否实现了父类的抽象成员,如果没有实现会抛出异常。
  4. 只能继承一个类(AClass或Class),否则抛出异常.
  5. 不能定义抽象成员,否则抛出异常。

抽象类AClass:

  1. 可以声明构造函数,供子类Class调用。
  2. 抽象类如果继承类Class,会抛出异常。
  3. 不用实现接口,可以交给子类Class实现。
  4. 不用实现父类抽象成员,可以交给子类Class实现。
  5. 只能继承一个抽象类AClass,否则抛出异常。

接口Interface:

  1. 接口只能继承接口,否则抛出异常。 

使用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: {  //公有虚方法
    }
});
View Code

相关文章: