根据输入的不同返回不同类的实例,一般用来创建同一类对象。工厂方式的主要思想是将对象的创建与对象的实现分离。
运动工厂
场景:我想获得运动类目的信息、但是我不需要去管这些信息是怎么制定的由谁制定的、我只需要通过
// 篮球类class Basketball{constructor(name){this.name = name}getMember(){console.log('每一只队伍需要五个人,球名称:' + this.name)}}// 足球类class Football{constructor(name){this.name = name}getMember(){console.log('每一只队伍需要11个人,球名称:' + this.name)}}// 网球class Tennis{constructor(name){this.name = name}getMember(){console.log('每一只队伍需要1个人,球名称:' + this.name)}}// 运动工厂class SportsFactory{static create(type, name){switch(type){case 'NBA':return new Basketball(name)case 'WordCup':return new Football(name)case 'FrenchOpen':return new Tennis(name)}}}const basketball = SportsFactory.create('NBA','花球')basketball.getMember()const sportsFactory = SportsFactory.create('WordCup','蓝色足球')sportsFactory.getMember()/*这里解释下为什么使用一个暴露类通过静态方法的方式去按type去创建对应的类、主要还是因为当一个不知道你这个方法的人人家不知道是通过new 还是直接执行的方式创建类、索性直接通过类的静态方法统一*/
