设计模式之小总结

组合模式
在这里插入图片描述
就跟react的 createElement 方法出不多, 他去把虚拟dom的一个js对象树给实现了

命令模式
在这里插入图片描述
命令模式可以理解成, 客户, 前台, 跟(保洁, 厨师 等等) ,
客户: 客户只需要给前台打电话说,我需要保洁或者吃饭,但是客户不需要清楚,具体是谁来给他做饭还是保洁;
前台: 前台收到客户的需求之后,就会发布命令,然指定的人去客户那里做保洁,或者是煮饭
保洁, 厨师: 他们收到命令后,就会去执行他们的工作,他们不管谁发布指令的,只需要做一个无情的打工人就好了

class Cooker {
    cook() {
        console.log("做饭");
    }
}

class Cleaner {
    clean() {
        console.log("打扫");
    }
}


class CookCommend {
    receiverObj;
    constructor(receiver: any) {
        this.receiverObj = receiver;
    }

    execute() {
        this.receiverObj.cook();
    }
}


class CleanCommend {
    receiverObj;
    constructor(receiver: any) {
        this.receiverObj = receiver;
    }

    execute() {
        this.receiverObj.clean();
    }
}


class Customer {
    commendObj; 
    constructor(commend: any) {
        this.commendObj = commend;
    }

    setCommend(commend: any) {
        this.commendObj = commend;
    }

    clean() {
        this.commendObj.execute();
    }
    cook() {
        this.commendObj.execute();
    }
}


let cooker = new Cooker();
let cleaner = new Cleaner();
let cookCommend = new CookCommend(cooker);
let cleanCommend = new CleanCommend(cleaner);

let customer = new Customer(cookCommend);
customer.cook();
customer.setCommend(cleanCommend);
customer.clean();

享元模式
在这里插入图片描述
享元模式: 就是 flyWeight, 就是轻量级的意思, 就是我们该封装的时候就封装,该通用的就通用,该独立就独立使用, 节约内存的损耗
在这里插入图片描述
比如说是这个样子

function Person(name, age) {
    // 这里的数据是私有的
    this.name = name;
    this.age = age;
}

// 这个的方法是公有的
Person.prototype.getName = function() {
    return this.name;
}

Person.prototype.getAge = function() {
    return this.age;
}

const pp1 = new Person("a", 10);
pp1.getName();
const pp2 = new Person("b", 20);
pp2.getAge();

模板方法模式
在这里插入图片描述
模板就是我们定义好模板规则,子元素去继承, 重写他的模板就好了

class Person1 {
    dinner() {
        this.buy();
        this.cook();
        this.eat();
    }

    buy() {
        throw new Error("必须有子类实现");
    }

    cook() {
        throw new Error("必须有子类实现");
    }

    eat() {
        throw new Error("必须有子类实现");
    }
}

class Aaa extends Person1{
    buy() {
        console.log("买东西");
    }

    cook() {
        console.log("煮饭");
    }

    eat() {
        console.log("吃东西");
    }
}

let aaaa = new Aaa();
aaaa.cook();

其他的模式:
工厂模式
单例模式
适配器模式
装饰器模式
代理模式
观察者模式
策略模式
原型模式
桥接模式

具体的细节, 请参考这个视频, 讲的确实不错, 去这里

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值