zoukankan      html  css  js  c++  java
  • 工厂模式

    工厂模式,根据不同的输入返回不同的类的事例,一般用来创建同一类对象,工厂模式的主要思想是将对象的创建和对象的分实现分离

     class Restaurant {
        constructor() {
            this.menuData = {}
        }
        
        /* 创建菜品 */
        getMenu(menu) {
            if (!this.menuData[menu])
                throw new Error('这个菜本店没有 -。-')
            const { type, message } = this.menuData[menu]
            return new Menu(type, message)
        }
        
        /* 增加菜品种类 */
        addMenu(menu, type, message) {
            if (this.menuData[menu]) {
                console.Info('已经有这个菜了!')
                return
            }
            this.menuData[menu] = { type, message }
        }
        
        /* 移除菜品 */
        removeMenu(menu) {
            if (!this.menuData[menu]) return
            delete this.menuData[menu]
        }
    }
    
    /* 菜品类 */
    class Menu {
        constructor(type, message) {
            this.type = type
            this.message = message
        }
        
        eat() { console.log(this.type + this.message) }
    }
    
    const restaurant = new Restaurant()
    restaurant.addMenu('YuXiangRouSi', '鱼香肉丝', ' 真香~')          // 注册菜品
    restaurant.addMenu('GongBaoJiDin', '宫保鸡丁', ' 让我想起了外婆做的菜~')
    
    const dish1 = restaurant.getMenu('YuXiangRouSi')
    dish1.eat()                                                                             // 输出: 鱼香肉丝 真香~
    const dish2 = restaurant.getMenu('HongSaoPaiGu')    // 输出: Error 这个菜本店没有 -。-
  • 相关阅读:
    MongoDB简单使用
    mongodb安装部署
    分布式通信-序列化
    分布式通信协议
    分布式概念
    springboot-事件
    spring-事件
    spring-@Component/@ComponentScan注解
    springboot-Date日期时间问题
    enginx:基于openresty,一个前后端统一,生态共享的webstack实现
  • 原文地址:https://www.cnblogs.com/webcyh/p/11311426.html
Copyright © 2011-2022 走看看