javascript设计模式之创造型工厂模式

以下是使用工厂模式编写猫类、狗类和人类的示例代码(JavaScript):

// 产品类 Animal
abstract class Animal {
  abstract speak(): string;
}

// 具体产品类 Cat
class Cat extends Animal {
  speak() {
    return 'Meow';
  }
}

// 具体产品类 Dog
class Dog extends Animal {
  speak() {
    return 'Woof';
  }
}

// 具体产品类 Human
class Human extends Animal {
  speak() {
    return 'Hello';
  }
}


// 工厂类 AnimalFactory
class AnimalFactory {
  createAnimal(animalType: string): Animal | null {
    switch (animalType) {
      case 'cat':
        return new Cat();
      case 'dog':
        return new Dog();
      case 'human':
        return new Human();
      default:
        return null;
    }
  }
}

使用示例:

// 创建一个动物工厂
const factory = new AnimalFactory();

// 创建一只猫
const cat = factory.createAnimal('cat');
console.log(cat?.speak());  // 输出:Meow

// 创建一只狗
const dog = factory.createAnimal('dog');
console.log(dog?.speak());  // 输出:Woof

// 创建一个人
const human = factory.createAnimal('human');
console.log(human?.speak());  // 输出:Hello

在此示例中,使用了抽象类 Animal 来表示具体的产品,每个具体产品(Cat、Dog 和 Human)都继承自 Animal 并实现它们的 speak 方法。工厂类 AnimalFactory 根据传入的参数来创建相应的产品。这种方式使得工厂可以根据需要创建不同类型的产品,并且可以方便地增加新的产品或工厂。注意在 TypeScript 中,使用了可选链操作符 ?. 来访问 speak 方法以避免空引用错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值