JavaScript设计模式-建造者模式(2)

简介: JavaScript设计模式-建造者模式(2)

建造者设计模式


建造者设计模式和工厂设计模式都是创建对象使用的,工厂设计模式比较注重创建对象的整体思路,建造者设计模式比较注重对象创建的细节,使用这种模式创建出复杂对象或者符合对象结构会非常清晰;

小案例


在班级中需要统计个人信息,都是使用纸质进行填写信息,我们现在需要将这些信息统一整理做成电子版的,我们该如何去做?

首先我们需要把他们的信息都规整起来,然后使用一个函数,里面定义一些对象和属性及方法的操作,然后最后返回出去一个新对象

//存放信息
        let data = [{
            name: '若水',
            age: '20',
            hobby: "编程"
        }, {
            name: '菜菜',
            age: '20',
            hobby: "篮球"
        }, {
            name: '牛牛',
            age: '20',
            hobby: "足球"
        }];
        // 功能函数
        function Structure(prame) {
            let info = {}
            info.name = prame.name;
            info.age = prame.age;
            //对于爱好进行整理
            info.hobby = {};
            // 对于学生的爱好进行整理和描述
            switch (prame.hobby) {
                case '编程':
                    info.hobby = {
                        name: '编程',
                        deg: '喜欢专研'
                    }
                    break;
                case '篮球':
                    info.hobby = {
                        name: '篮球',
                        deg: '喜欢运动'
                    }
                    break;
                default:
                    info.hobby = {
                        name: prame.hobby,
                        deg: '无'
                    }
                    break;
            };
            // 修改学生的爱好以及爱好描述
            info.hobby.ochangeHobby = function(hobby) {
                this.name = hobby
            }
            info.hobby.ochangeDeg = function(deg) {
                    this.deg = hobby
                }
                // 我们再将包装好的对象在return出去
            return info;
        }
        // 使用
        //声明一个空数组,用于接收修改过后的对象
        let studentArr = []
        data.map(res => {
                studentArr.push(Structure(res));
            })
            // 使用修改爱好方法
        studentArr[0].hobby.ochangeHobby('跑步');

这个功能也不是太大,逻辑也不复杂,但是我们写的代码却不够清晰有条理,以后维护的情况下,需要花很长时间去搞清楚代码的逻辑,我们接下来用建造者模式实现这个小案例

建造者模式实现


建造者模式实现的看起来比较清晰,每个功能我们都会尽量的做抽离处理,这样也便于以后维护

//存放信息
        let data = [{
            name: '若水',
            age: '20',
            hobby: "编程"
        }, {
            name: '菜菜',
            age: '20',
            hobby: "篮球"
        }, {
            name: '牛牛',
            age: '20',
            hobby: "足球"
        }];
        // 建造者模式
        function Structure(prame) {
            let info = new Prems(prame);
            info.hobby = new CreateHobby(prame.hobby);
            // 我们再将包装好的对象在return出去
            return info;
        }
//用户基本信息构造函数
        function Prems(prame) {
            this.name = prame.name;
            this.age = prame.age;
        }
//用户爱好构造函数
        function CreateHobby(hobby) {
            switch (hobby) {
                case '编程':
                    this.hobby.name = '编程';
                    this.hobby.deg = '喜欢专研';
                    break;
                case '篮球':
                    this.hobby.name = '篮球';
                    this.hobby.deg = '喜欢运动';
                    break;
                default:
                    this.hobby.name = hobby;
                    this.hobby.deg = '无';
                    break;
            };
        }
        // 修改学生的爱好以及爱好描述
        CreateHobby.prototype.ochangeHobby = function(hobby) {
            this.name = hobby
        }
        CreateHobby.prototype.ochangeDeg = function(deg) {
                this.deg = hobby
            }
            // 使用
            //声明一个空数组,用于接收修改过后的对象
        let studentArr = []
        data.map(res => {
                studentArr.push(Structure(res));
            })
            // 使用修改爱好方法
        studentArr[0].hobby.ochangeHobby('跑步');

在正常模式中,我们把属性和方法都写在了一个函数中,但是在建造者设计模式中,我们对此进行了进一步的封装和抽离,让我们代码变得更为清晰,也可以说是建造者模式把每个功能进行单独进行管理,也便于我们功能复用

坚持努力,无惧未来!

相关文章
|
3月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
26天前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
2月前
|
设计模式 JavaScript 前端开发
JavaScript设计模式--访问者模式
【10月更文挑战第1天】
33 3
|
3月前
|
设计模式 算法 Java
Java设计模式-建造者模式(6)
Java设计模式-建造者模式(6)
|
4月前
|
设计模式 JavaScript 前端开发
从工厂到单例再到策略:Vue.js高效应用JavaScript设计模式
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和灵活性,还增强了Vue应用的整体质量。
59 1
|
4月前
|
设计模式 JavaScript 前端开发
小白请看 JS大项目宝典:设计模式 教你如何追到心仪的女神
小白请看 JS大项目宝典:设计模式 教你如何追到心仪的女神
|
4月前
|
设计模式 XML 存储
【四】设计模式~~~创建型模式~~~建造者模式(Java)
文章详细介绍了建造者模式(Builder Pattern),这是一种创建型设计模式,用于将复杂对象的构建与其表示分离,允许分步骤创建一个复杂的对象而无需指定其内部的具体构造细节。通过定义抽象建造者、具体建造者、指挥者和产品角色,建造者模式允许通过相同的构建过程创建不同的产品表示,提高了系统的灵活性和扩展性。
|
5月前
|
设计模式 JavaScript Go
js设计模式【详解】—— 状态模式
js设计模式【详解】—— 状态模式
83 7
|
5月前
|
设计模式 JavaScript
js设计模式【详解】—— 桥接模式
js设计模式【详解】—— 桥接模式
73 6
|
5月前
|
设计模式 JavaScript
js设计模式【详解】—— 原型模式
js设计模式【详解】—— 原型模式
53 6