美文网首页
建造者模式

建造者模式

作者: 第三人称i | 来源:发表于2018-12-01 13:24 被阅读0次
        // 应用场景: 用户输入的必填项 or 非必填项
        // 比如说 我们做一个工作调查报告: 
        // 分析: 必填项:用户名、职位。
        // 非必填项: 月薪、公司名。
        // 1. 定义 非必填项默认  如果不填默认 保密;
        let WorkReport = function(param){
            this.salary = param && param.salary || "保密";
            this.companyName = param && param.companyName || "保密";
        }
        // 2. 给非必填项添加俩个方法
        WorkReport.prototype = {
            getSalary : function () {
                return this.salary;
            },
            getCompanyName : function (){
                return this.companyName;
            }
        }
        // 定义 必填项的 name 处理逻辑类
        let Name = function(name){
            let names = name.substring(0,1);
            names = names + "**";
            this.name = names;
        }
        // 定义 必填项的 work 处理逻辑类
        let Work = function(work){
            let _this = this;
            ((work,_this)=>{
                switch(work){
                    case "Javascript":
                        _this.work = "Javascript";
                        _this.describe = "前端程序员!";
                        break;
                    case "Java":
                        _this.work = "Java";
                        _this.describe = "后端程序员!"
                        break;
                    case "UI":
                        _this.work = "UI";
                        _this.describe = "设计师!"
                        break;
                    default:
                        _this.work = work;
                        _this.describe = '对不起,我们没有对该职位描述';
                }
            })(work,_this)
        }
        // 给work 添加俩个方法  改变上面函数 没有的工作
        Work.prototype = {
            changeWork : function(work){
                this.work = work;
            },
            changeDescribe : function(describe){
                this.describe = describe;
            }
        }
        // 将上面所有类 封装到一个 类中。
        let Person = function(name,work){
            let _person = new WorkReport();
            _person.name = new Name(name);
            _person.work = new Work(work);
            return _person;
        }


        var a = new Person('杨小宝','Javascript');
        a.salary = "10000";
        a.companyName = "北明软件";
        console.log(a.salary);
        console.log(a.companyName);
        console.log(a.work.describe);
        console.log(a.work.work);
        a.work.changeWork('Web');
        a.work.changeDescribe("我是一名前端程序员");
        console.log(a.work.work);        
        console.log(a.work.describe);

        // 解释:
        // 非必填直接在原始类(WorkReport) 定义默认 
        // 必填项 如果有对应的业务逻辑 单独写对应的类(work,name)

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/zmolcqtx.html