工厂模式定义一个用于创建对象的接口,
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);
工厂模式适用的模式
- 对象的构建十分复杂
- 需要根据不同的要创建不同的实例或者大量属性相同的属性的小对象
工厂有利于代码结构的清晰,也可以是模块职责的单一化。
本文介绍了一种软件设计模式——工厂模式,该模式通过定义一个用于创建对象的接口来简化对象的创建过程。文中详细展示了如何使用JavaScript实现一个具体的工厂模式案例,并解释了其应用场景。
311

被折叠的 条评论
为什么被折叠?



