原型模式

Posted 每天进步一点点(‾◡◝)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型模式相关的知识,希望对你有一定的参考价值。

介绍

原型模式是创建型模式的一种,其特点在于通过复制一个已经存在的实例来返回新的实例。被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。

对于原型模式,我们可以利用javascript特有的原型继承特性去创建对象的方式,也就是创建的一个对象作为另外一个对象的prototype属性值。原型对象本身就是有效的利用了每个构造器创建的对象,例如,如果一个构造函数的原型包含了一个name属性,那么通过这个构造函数创建的对对象都会有这个属性。

        let _obj = {
            name:'1',
            getName(){
                console.log(this.name)
            }
        }
        let _newObj = Object.create(_obj);
        console.log(_newObj.name) // 1

如果你不想使用Object.create实现原型模式,可以继续往下看

        let _obj = {
            init(name) {
                this.name = name;
            },
            getName() {
                console.log(`我的名字叫${this.name}`)
            }
        }
        function fn(name) {
            function Fn(){};
            Fn.prototype = _obj;
            let _f = new Fn();
            _f.init(name);
            return _f
        }
        let _newFn = fn('小明');
        _newFn.getName();  // 我的名字叫小明

以上是关于原型模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之原型模式(Prototype)详解及代码示例

设计模式课程 设计模式精讲 9-2 原型模式coding

设计模式--原型模式

5.原型模式

设计模式原型模式

csharp 设计模式 - 原型 - 结构代码