【转】Factory Method(createMethod)模式的javascript实现

本文来自CSDN博客http://blog.csdn.net/allen1981813/archive/2007/08/17/1747568.aspx


名词解释:
工厂方法模式 是一种面向对象的设计模式。通过调用不同的方法返回需要的类,而不是去实例化具体的类。 对实例创建进行了包装。 工厂方法是一组方法, 他们针对不同条件返回不同的类实例,这些类一般有共同的父类。

工厂方法模式实施一种按需分配的策略, 即传入参数进行选择, 工厂方法根据参数进行选择,返回具体的实例。

内定义制 把函数定义放在类内

外定义制 把函数定义放在类外,对于 [动态定义类模式] 的 javascript类实现手法,这个可以区分函数是否属于virtual。

总体上说,内外定义的方法是完全一样地,内定义制度,可能更迎合class关键字习惯的人吧。我更倾向于外边定义,这样就完全类似java,也就是默认完全是virtual方法。

特别指出

[动态定义类模式]口头协议,内部定义制 为一般函数定义,外部定义制度为virtual函数。

昵称:

Virtual Constructor

实现语言:javascript

昨天实现了javascript的2种类创建方法,在一定程度上,他们很类似java,似乎默认为virtual函数(方法)。

这几天在复习设计模式,正停在工厂方法(Factory Method我喜欢称之为:createMethod)。觉得该模式是充分体现OO特性的模式之一,于是在昨天的类上添加了一个方法(当然,在昨天证明下,应该是virtual的了,而且默认是)。

-------------------------------------------------------------------
分别在四个类中追加如下代码:

//It will be overrided by child
CPrototypeBase.prototype.createMethode = function()
...{
alert( "CPrototypeBase::createMethode" );
};

//Overrided
CPrototypeChild.prototype.createMethode = function()
...{
alert( "CPrototypeChild::createMethode" );
};

以下4个尤其注意,我不把他们放入...{}内,否则出错,而是追加在类“内定义制”外,我称之为“外定义制”。

该函数readAdditionalInfo 被从原先版本中搬出:

//This guy will be by its child overrided.
CDynamicBase.prototype.readAdditionalInfo = function()
...{
this.m_strAdditionalInfo = "This is an additional information on CDynamicBase.";
};


//it will be overrided by child
CDynamicBase.prototype.createMethode = function()
...{
alert( "CDynamicBase::createMethode" );
};

//Overrided
CDynamicChild.prototype.createMethode = function()
...{
alert( "CDynamicChild::createMethode" );
};

//Override
CDynamicChild.prototype.readAdditionalInfo = function()
...{
this.m_strAdditionalInfo
= "Hallo!!!!This is an overrided additional information on CDynamicChild.";
};



在2个base里追加同样一句话:

this.createMethode();

-----------------------------------------------------------------

好了,也就完成了。代码实现也通过,message实现正常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值