Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React native- Best way to create singleton pattern

I am new in react-native coding but have experienced on objective-c and swift coding and want use singleton pattern in react-native. I have tried to find out the solution from other StackOverflow answer but most of them are creating only singleton functions as below code:

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();

    alert("Same instance? " + (instance1 === instance2));  
}

As we can see in above code here we are creating singleton function not class. Please let me know if any way to create singleton class and pass multiple variables in that class as objective-c or swift. Note: Please also notify me if I am going in the wrong direction.

like image 348
Alok Avatar asked May 17 '17 11:05

Alok


2 Answers

Here's my implementation for singleton class...

Controller.js

export default class Controller {
    static instance = Controller.instance || new Controller()

    helloWorld() {
        console.log("Hello World... \(^_^)/ !!")
    }
}

Usage:

import Controller from 'Controller.js'

Controller.instance.helloWorld()
like image 163
Vikas Avatar answered Sep 19 '22 19:09

Vikas


You can use something like that

 class SingletonClass {

  static instance = null;
  static createInstance() {
      var object = new SingletonClass();
      return object;
  }

  static getInstance () {
      if (!SingletonClass.instance) {
          SingletonClass.instance = SingletonClass.createInstance();
      }
      return SingletonClass.instance;
  }
}

var instance1 = SingletonClass.getInstance();
var instance2 = SingletonClass.getInstance();
like image 26
Hussam Kurd Avatar answered Sep 18 '22 19:09

Hussam Kurd