敲碎时间的人的个人专栏
上一篇

js设计模式(工厂,原型,单例)

广告
选中文字可对指定文章内容进行评论啦,→和←可快速切换按钮,绿色背景文字可以点击查看评论额。
大纲

我们知道,在设计模式中,创建型模式有五种,今天我们继续讨论剩下的模式。

工厂模式

工厂的作用是生产具有相同特性的相似物体。这有助于轻松管理、维护和操作对象。例如,在我们的玩具工厂,每个玩具都会有一定的信息。它将包含购买日期、原产地和类别。

var ToyFactory = function(){
  this.createToy = function(type) 
  {
    var toy;
    if(type == "starwars")
      {
        toy = new StarWars();
      }
    toy.origin = "Origin";
    toy.dop = "2/22/2022";
    toy.category="fantasy";
  }
}

原型模式

很多时候,我们需要创建一个新对象,它具有来自另一个父对象的默认值。这可以防止创建具有未初始化值的对象。原型模式可用于创建此类对象。

原型模式也称为属性模式。

  1. 在我们的玩具厂里,我们有星球大战部门,生产许多角色。
  2. 每个角色都有一个流派、到期日期和状态字段。来自《星球大战》部门的所有玩具的这些字段将保持不变。
function Star_Wars_Prototype(parent){
   this.parent = parent;
   this.duplicate = function () 
   {
      let starWars = new StarWarsToy();
      starWars.genre = parent.genre;
      starWars.expiry = parent.expiry;
      starWars.status = parent.status;
      return starWars;
   };
}

function StarWarsToy(genre, expiry, status){
   this.genre = genre;
   this.expiry = expiry;
   this.status = status;
}

function build () {
   var star_wars_toy = new StarWarsToy('fantasy', 'NA', 'Jan');
   var new_star_wars_toy = new Star_Wars_Prototype(star_wars_toy);
   
   //When you are ready to create
   var darth = new_star_wars_toy.duplicate();
}

单例模式

单例模式对应一个“单例”。一个给定的对象只能有一个实例。当系统有数据需要从一个点进行协调时,您可以使用此模式。

var Singleton = (function () {
   var instance;

   function createInstance() {
       var object = new Object("I am the instance");
       return object;
   }

   return {
       getInstance: function () {
           if (!instance) {
               instance = createInstance();
           }
           return instance;
       }
   };
})();

function run() {

   var instance1 = Singleton.getInstance();
   var instance2 = Singleton.getInstance();

   console.log("Same instance? " + (instance1 === instance2));
}

 

版权声明:著作权归作者所有。

X

欢迎加群学习交流

联系我们