我正在研究设计模式,我最喜欢的是工厂模式。但是当我挖掘其他人写的更多代码时,我不会经常看到这种模式,特别是在较新的堆栈上。
例如,在本文http://dealwithjs.io/design-patterns-the-factory-pattern-in-javascript/中,示例如下所示:
function SimpleFactory(name) {
var factoryName = name;
var getSalesEmployee = function(firstName, lastName) {
return {
firstName: firstName,
lastName: lastName,
comission: 0,
salary: 100,
projects: [],
type: 'sales'
};
}
var getEngineerEmployee = function(firstName, lastName) {
return {
firstName: firstName,
lastName: lastName,
salary: 150,
manager: '',
technologies: [],
projects: [],
type: 'engineer'
}
}
var getName = function() {
return factoryName;
}
return {
getSales: getSalesEmployee,
getEngineer: getEngineerEmployee,
getName: getName
}
}
module.exports = {
getInstance: SimpleFactory
}
以上代码对我来说是控制器,但通常我只是像这样编写
modue.exports = {
funcA = () => {}
funcB = () => {}
}
在另一个文件中我可以使用something.funcA,为什么我还需要在这里使用工厂?我认为节点的commonJs只是解决了泄漏问题。
答案 0 :(得分:0)
设计模式工厂:See More
在Nodejs + ES6中,我们使用“Class”来编写它。
示例:我在这里不需要写。你需要添加它。
class ImageReader {
constructor() {}
getDecodeImage($param){};
}
class DecodedImage {
constructor(image) {
this.image = image;
}
toString() {
return `${this.image}: is decoded`;
}
}
class GifReader extends ImageReader {
constructor(image) {
super();
this.decodedImage = new DecodedImage(image);
}
getDecodeImage() {
return this.decodedImage;
}
}
class JpegReader extends ImageReader {
constructor() {
super(image);
this.decodedImage = new DecodedImage(image);
}
getDecodeImage() {
return this.decodedImage;
}
}
class FactoryMethodDemo {
main(args = []) {
let reader = '';
let image = args[0];
let format = image.substring(image.indexOf('.') + 1, (image.length));
if (format.equals("gif")) {
reader = new GifReader(image);
}
if (format.equals("jpeg")) {
reader = new JpegReader(image);
}
if (reader) {
decodedImage = reader.getDecodeImage();
console.log(decodedImage);
}
}
}
帮助它会帮助你。