JavaScript设计模式-组合模式(16)

简介: JavaScript设计模式-组合模式(16)

组合设计模式是用于将多个部分通过组合的方式行成一个整体,就比如我们去吃饭,点了一份米饭和一份鱼香肉丝,这些东西可以看成一个部分,通过组合的方式可以组成一个新的产品,鱼香肉丝盖饭,这就是组合设计模式

组合设计模式的业务场景


表单用于收集用户数据,比如登录,注册,或者一些信息填报,由于这些表单都是类似的,如果我们一个一个去做,里面充满了很多重复的东西,增加了工作量,我们可以使用组合设计模式

组合设计模式小案例



一个餐馆的运转需要一些雇佣一些人手,但是这些雇佣的人手都有一个共同点,我们需要对其支付一定的薪酬作为劳动的回报,其次他们还需担负某些任务职责,可能需要向某人汇报餐馆情况,也有可能会拥有下属等等,我们来实现一下

声明一个员工类,我们对于新招聘员工需要提供三个参数,员工姓名,员工薪资和员工所任职岗位,还可进行获取员工姓名,对员工的薪资进行获取和修改以及获取员工当前任职职位和对员工进行调岗的操作

class Staff {
        //员工名  员工薪资  员工岗位
            constructor(name, salary, position) {
                this.name = name;
                this.salary = salary;
                this.position = position;
            }
            // 获取员工名字
            getName() {
                return this.name;
            }
            //修改员工薪资
            setSalary(salary) {
                this.salary = salary;
            }
            // 获取员工薪资
            getSalary() {
                return this.salary;
            }
            // 设置员工岗位
            setPosition(position) {
                this.position = position;
            }
            // 获取员工岗位
            getPosition() {
                return this.position;
            }
        }

在声明一个店铺类,店铺类是对新招聘员工进行添加到该店铺人员中,以及对于该店铺员工的职位信息进行查看和对当前用工成本进行统计

class StoreMembers {
            constructor() {
               //店铺人员总职员
                this.employees = [];
            }
            // 往店铺总职员添加员工
            addEmployee(employee) {
                this.employees.push(employee);
            }
            // 获取店铺职员总开销
            getNetSalaries() {
                let netSalary = 0;
                netSalary = this.employees.reduce((total, currt) => total.getSalary() + currt.getSalary())
                return netSalary;
            }
            // 获取店铺职员信息名单
            getPositionList() {
                return (this.employees.map(res => ({ name: res.getName(), position: res.getPosition(), salary: res.getSalary() })))
            }
        }

我们对新招聘员工进行添加到店铺总职员中并且获取到该店铺对于职员的总开销以及获取店铺总职员信息名单

// 创建俩个员工类实例
        const xh = new Staff("小红", 12000, '服务员');
        const xm = new Staff("小明", 10000, '收银员');
       // 创建店铺类
       const storeMembers = new StoreMembers();
       //往店铺中添加新的职员
       storeMembers.addEmployee(xh);
       storeMembers.addEmployee(xm);
       //获取店铺职员的总薪资
       console.log("职员薪资总额:", storeMembers.getNetSalaries());
       //获取店铺职员总职位信息
      console.log("职员总职位信息:", storeMembers.getPositionList());

组合设计模式让相互关联的数据产生了结构性,无论是直观的去看还是去修改当前数据的关系,都只需要关心当前下层数据的东西,因此降低了数据之间的复杂程度,提高了代码可维护性


坚持努力,无惧未来!


相关文章
|
4月前
|
设计模式 JavaScript 数据安全/隐私保护
js设计模式之工厂模式
js设计模式之工厂模式
32 0
|
3月前
|
设计模式 前端开发 算法
【面试题】 ES6 类聊 JavaScript 设计模式之行为型模式(二)
【面试题】 ES6 类聊 JavaScript 设计模式之行为型模式(二)
|
4月前
|
设计模式
二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理
二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理
|
4月前
|
设计模式
二十三种设计模式全面解析-组合模式与迭代器模式的结合应用:构建灵活可扩展的对象结构
二十三种设计模式全面解析-组合模式与迭代器模式的结合应用:构建灵活可扩展的对象结构
|
2天前
|
设计模式 Java 容器
【设计模式系列笔记】组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树状结构以表示部分-整体的层次结构。组合模式使得客户端可以统一处理单个对象和对象组合,而无需区分它们的类型。
35 12
|
11天前
|
设计模式 Java
小谈设计模式(20)—组合模式
小谈设计模式(20)—组合模式
|
1月前
|
设计模式 JavaScript uml
设计模式之组合模式
设计模式之组合模式
设计模式之组合模式
|
1月前
|
设计模式 缓存 JavaScript
js常用设计模式
js常用设计模式
20 1
|
1月前
|
设计模式 存储 安全
【设计模式】组合模式
【设计模式】组合模式
|
2月前
|
设计模式 Java
浅谈设计模式 - 组合模式(十二)
浅谈设计模式 - 组合模式(十二)
51 0