js: abstractFactory

function Employee(name) {
	this.name = name;
	this.say = function() {
		log.add("I am employee " + name);
	}
}

function EmployeeFactory() {
	this.create = function(name) {
		return new Employee();
	}
}

function Vendor(name) {
	this.name = name;
	this.say = function() {
		log.add("I am vendor " + name);
	}
}

function VendorFactory() {
	this.create = function(name) {
		return new Vendor(name);
	}
}


var log = (function() {
	var log = "";
	return {
		add: function(msg) { log += msg + "
"},
		show: function() { 
			console.log(log);
			log = "";
		}
	};

}());


function run() {
	var persons = [];
	var employeeFactory = new EmployeeFacotry();
	var vendorFactory = new VendorFactory();

	persons.push(employeeFactory.create("manx"));
	persons.push(employeeFactory.create("bob"));
	persons.push(vendorFactory.create("jack"));
	persons.push(vendorFactory.create("smith"));

	for (obj of persons) {
		obj.say();
	}

	log.show();

}

run();

  

原文地址:https://www.cnblogs.com/ax-null/p/6804016.html