javaScript工場モデル

2297 ワード

もっと読む
工場モードはオブジェクトを作成するためのインターフェースを定義します.
var PaperFloderCreatorFactory = function (user, paths, pathModel) {

};
 
異なるクラスを作成するには、金型と見なして、異なるクラスのインスタンスを作成します.
PaperFloderCreatorFactory.Creators = {
    'spec_html': paperHtmlCreator,
    'lib': paperLibCreator,
    'practices': paperPracticesCreator,
    'specs': paperPracticesCreator
};
 
工場はお客様のニーズに応じて、異なる実例類を生産します.
PaperFloderCreatorFactory.create_file_creator = function (file, user, paths, pathModel) {
    var Model = PaperFloderCreatorFactory._forCreator(file);

    return new Model(user, paths, pathModel, file);
};
 
これらの例はしばしば同じインターフェースを持つ.
function PaperHtmlCreator(user, paths, pathModel, type){
    this.user       = user;
    this.paths      = paths;
    this.pathModel  = pathModel;
    this.type       = type;
}

PaperHtmlCreator.prototype.create_floder = function(){
    var self = this;
    return new Promise(function(resolve){
        if(! self.paths) resolve();
        FileOperate.copy_file_and_rename(self.paths,self.pathModel.get_paper_course_path(self.user,'practices'));
        resolve();
    })
};
function PaperLibCreator(user, paths, pathModel,type){
    this.user       = user;
    this.paths      = paths;
    this.pathModel  = pathModel;
    this.type       = type;
}

PaperLibCreator.prototype.create_floder = function () {
    var self = this;
    return new Promise(function (resolve) {
        if(! self.paths) resolve();
        FileOperate.copy_dir(self.paths, self.pathModel.get_paper_course_path(self.user, 'lib'), function () {
            resolve()
        })
    })
};
 
使用生産の実例類
floder_creator = PaperFloderCreatorFactory.create_file_creator(key, user, paths, pathModel);
 
工場モード適用モード
  • オブジェクトの構築は非常に複雑です.
  • は、異なるインスタンスまたは多数の属性が同じである小オブジェクト
  • を作成する必要がある.
    工場はコード構造の明確さに有利であり、モジュールの役割の単一化でもあります.