javascript设计模式(一)工厂模式

工厂模式分为两种,简单工厂模式和抽象工厂模式。

  • 简单工厂模式
function createPeople(name, time, gender) {
        let p = new Object();
        p.name = name;
        p.time = time;
        p.gender = gender;
        p.getName = function () {
            return this.name
        };
        return p
    }
let p1 = createPeople('scc','1995','male'); //

可以解决多个类似对象声明的问题;也就是为了解决实例化对象产生重复的问题。

  • 抽象工厂模式(其实就是复杂点的工厂模式)

复杂的工厂模式定义是:用父类来创建子类,可以在各自的子类里定义各自需要的方法。

    // 定义自行车的构造函数
    var BicycleShop = function (name) {
        this.name = name;
        this.method = function () {
            return this.name;
        }
    };
    BicycleShop.prototype = {
        sellBicycle: function (model) {
            var bicycle = this.createBicycle(model);

            // 执行A业务逻辑
            bicycle.A();

            // 执行B业务逻辑
            bicycle.B();

            return bicycle;
        },
        createBicycle: function (model) {
            throw new Error("父类是抽象类不能直接调用,需要子类重写该方法");
        }
    };

    // 实现原型继承
    function extend(Sub, Sup) {
        //Sub表示子类,Sup表示超类(父类)
        var F = function () {};

        F.prototype = Sup.prototype;

        Sub.prototype = new F();

        Sub.prototype.constructor = Sub;

        if (Sup.prototype.constructor === Object.prototype.constructor) {
            // 检测超类原型的构造器是否为原型自身
            Sup.prototype.constructor = Sup;
        }

    }
    var BicycleChild = function (name) {

        this.name = name;

        // 继承构造函数父类中的属性和方法
        BicycleShop.call(this, name);
    };

    // 子类继承父类原型方法 
    extend(BicycleChild, BicycleShop);

    // BicycleChild 子类重写父类的方法
    BicycleChild.prototype.createBicycle = function () {
        var A = function () {
            console.log("执行A业务操作");
        };
        var B = function () {
            console.log("执行B业务操作");
        };
        return {
            A: A,
            B: B
        }
    }
    var childClass = new BicycleChild("scc");
    console.log(childClass);

两个好处:
第一:弱化对象间的耦合,防止代码的重复。在一个方法中进行类的实例化,可以消除重复性的代码。第二:重复性的代码可以放在父类去编写,子类继承于父类的所有成员属性和方法,子类只专注于实现自己的业务逻辑。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,403评论 1 15
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,353评论 3 14
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,276评论 18 399
  • 谁能知道说出这两个字的人 内心当时是一种什么心情 面对一个应该恨一辈子的人 这个人 欺骗了我的人生 改变了我的未来...
    浪漫无云阅读 2,953评论 0 0
  • 大家认为各种的动物难画,椭圆形,加上不同形状的耳朵,和动物本身的特点,比如熊猫的黑眼圈,考拉的大耳朵,蜗牛的长长眼...
    影子倒了阅读 3,968评论 3 3

友情链接更多精彩内容