工厂方法模式

工厂方法模式是一种实现了「工厂」概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是「定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。」

  1. var Humanity = (function() {
  2. function Man() {
  3. this.introduce = function() {
  4. return 'I\'m a man.';
  5. }
  6. }
  7. function Woman() {
  8. this.introduce = function() {
  9. return 'I\'m a woman.';
  10. }
  11. }
  12. var humanity = {
  13. male: Man,
  14. female: Woman
  15. };
  16. return function( gender ) {
  17. return new humanity[gender]();
  18. }
  19. })();
  20. var man = new Humanity('male');
  21. var woman = new Humanity('female');
  22. console.log(man.introduce()); // "I'm a man."
  23. console.log(woman.introduce()); // "I'm a woman."