ユーザーがウィジェットを作成できるアプリケーションを作成しています。ウィジェットにはいくつかの異なるタイプがあり、プロトタイプの継承を使用してそれらを定義しました。すなわち
//the base widget that all widgets inherit from
var Widget = function(){}
Widget.prototype.someFunction = function(){}
//widget type A
var A = function(){}
A.prototype = new Widget();
//widget type B
var B = function(){}
B.prototype = new Widget();
同じタイプの新しいウィジェット インスタンスを作成できるメソッドを基本クラスに追加すると便利であることがわかりました。すなわち
//the base widget
var Widget = function(){};
Widget.prototype.clone = function(){
switch(this.type){
case 'A':
return new A();
break;
case 'B':
return new B();
break;
default:
break;
}
};
次のコードを使用して、同じタイプの新しいウィジェットを取得できます。
var widgetTypeA = new A();
var cloneOfWidgetTypeA = widgetTypeA.clone();
私の懸念は、基本ウィジェットが、それから継承する各タイプのウィジェットを明示的に認識する必要があることです。これは良い OOP の原則に違反していますか?