AbtractObject
AbstractObject with Object State Supports and free
method provides.
The derived class should overwrite the initialize
and finalize
methods.
Changes
V2.1.x
- add the state-able ability to any class.
V2.x
- separate eventable from AbstractObject
- separate eventable from RefObject too
- add the eventable function to eventable any class('abstract-object/eventable').
- use the eventable plugin(events-ex) to implement eventable object.
V1.x
- AbstractObject inherits from EventEmitter.
- RefObject inherits from AbstractObject
- AbstractError
State-able Ability(V2.1.x)
add the Object State Supports and free
method to your class directly.
stateable = require 'abstract-object/ability'
module.exports = class AbstractObject
stateable AbstractObject
AbstractObject
RefObject
The RefObject
is derived from AbstractObject. and add the RefCount
and AddRef/Release
Supports.
- methods:
release()
/free()
: Decrements reference count for this instance.
If it is becoming less than 0, the object would be (self) destroyed.addRef()
: Increments the reference count for this instance
and returns the new reference count.
Usage:
AbstractObject = require('abstract-object')
RefObject = require('abstract-object/RefObject')
inherits = require('inherits-ex')
createObject = AbstractObject.createObject
class MyObject
inherits MyObject, RefObject
initialize: (@a,@b)->
super
myObj = createObject(MyObject, 1, 2)
# if you do not wanna use `AbstractObject.create`, you MUST remember this:
# even the constructor is empty, you should call the parent's constructor manually.
# myObj = new MyObject()
class MyObject
inherits MyObject, RefObject
constructor: ->
# must call super method here:
super
initialize: (@a,@b)->
# must call super method here for RefObject initialization:
super
the javascript:
var AbstractObject = require('abstract-object')
var RefObject = require('abstract-object/RefObject')
var inherits = require('inherits-ex')
var createObject = AbstractObject.createObject
var MyObject = function() {
MyObject.__super__.constructor.apply(this, arguments);
}
var MyObject = function(){}
inherits(MyObject, RefObject)
MyObject.prototype.initialize = function(a,b) {
MyObject.__super__.initialize.call(this)
this.a = a
this.b = b
}
var myObj = createObject(MyObject, 1, 2)
var myObj = new MyObject(1,2)
AbstractError Classes
Moved to abstract-error.
AbstractError
All Errors are derived from the AbstractError.
- Members:
- message: the error message.
- code: the error code.
- Methods:
- ok()
- notFound()
- ....
- invalidFormat()
- Class Methods:
- AbstractError.isOk(err)
- AbstractError.isNotFound(err)
- ...
the error codes:
- AbstractError.Ok = 0
- AbstractError.NotFound = 1
- AbstractError.Corruption = 2
- AbstractError.NotSupported = 3
- AbstractError.InvalidArgument = 4
- AbstractError.IO = 5
- AbstractError.NotOpened = 6
- AbstractError.InvalidType = 7
- AbstractError.InvalidFormat = 8
Other Error Classes:
- NotFoundError
- CorruptionError
- NotSupportedError/NotImplementedError
- InvalidArgumentError
- IOError
- NotOpenedError
- InvalidTypeError
- InvalidFormatError
Extends the AbstractError
use the createError
function can extend the AbstractError.
createError(typeName, errorCode[, parentErrorClass])
arguments
- typeName (string): the error type name, the first character must be upper case.
- errorCode: (number): the error code, it should be greater than 1000.
- parentErrorClass: (class): the optional parent error class. defaults to AbstractError.
return
Usage
var Errors = require("abstract-object/Error")
var AbstractError = Errors.AbstractError
var createError = Errors.createError
var AlreadyReadError = createError('AlreadyRead', 10000)
var err = new AlreadyReadError("already read over error.")
assert.ok(AbstractError.isAlreadyRead(err))
assert.ok(AlreadyReadError.isAlreadyRead(err))
assert.ok(err.alreadyRead())
assert.equal(err.message, "already read over error.")
assert.equal(err.code, 10000)
Enhanced Inheritance Functions
Moved to inherits-ex.
Util Functions
Moved to util-ex.