(设计模式)1.工厂模式

734 阅读2分钟

说明:每天一个设计模式,成功奖励自己买个小册学习o(╥﹏╥)o
PS:学习参考---掘金的JavaScript 设计模式核⼼原理与应⽤实践小册

1.概念

工厂模式就是 将创建对象的过程单独封装,这就有点类似于我们去玩游戏一样,我们直接登录账号,然后开始就行了,不用关注游戏是怎么开发的。在工厂模式里,我登录账号点击开始,就是个传参过程,至于游戏怎么开发动画特效什么的不用关心,我们只需要能进入游戏玩就行。

总结:我们只需要关注传参和使用就行了。

2.代码案例

// 定义游戏的抽象类
class Game {
    // 设置人物模型
    setPerson() {
        throw new Error('抽象工厂方法不允许直接调用,需要重写');
    }
    // 设置人物战斗环境
    setEnvironment() {
        throw new Error('抽象工厂方法不允许直接调用,需要重写');
    }
}

class WGame extends Game {
    setPerson() {
        // 提供创建游戏任务
        return new GamePerson();
    }
    setEnvironment() {
        // 提供创建游戏地方
        return new GameEnvironment();
    }
}

// 人物模型类
class Person {
    // 人物描述
    describe() {
        throw new Error('抽象工厂方法不允许直接调用,需要重写');
    }
}
class GamePerson extends Person {
    describe() {
        console.log('构建人物形象');
    }
}

// 游戏战斗场景
class Environment {
    place() {
        throw new Error('抽象工厂方法不允许直接调用,需要重写');
    }
}

class GameEnvironment extends Environment {
    place() {
        console.log('构建战斗地点');
    }
}

// 创建一个游戏
const wgame = new WGame();
// 让游戏拥有人物形象
const wperson = wgame.setPerson();
// 让游戏拥有战斗场景
const wenvironment = wgame.setEnvironment();
// 显示人物形象
wperson.describe();
// 显示战斗场景
wenvironment.place();
三、运行结果