¿Es una mala práctica usar el módulo requireJS como singleton?

Planeo usar el siguiente patrón para usar el módulo basado en requireJS para que actúe como un singleton. Por favor informa esoclase devuelve una instancia de tipo 'classA', mientras que el resto de las clasesclassB, classC y main devuelve el tipo de clase del módulo. Todas estas son clases basadas en la clase MooTools.

La idea es usar laclase como un singleton disponible a nivel mundial, los métodos son solo rellenos. ¿Alguna idea de si este es un patrón aceptable para usar?

¿Volverá esto para morderme en una etapa posterior? Todavía no he intentado ejecutar r.js en el proyecto, así que estoy un poco preocupado y busco algún consejo.

    // classA.js
    define([], function() {
        var classA = new Class({

            initialize: function (regionId) {
                // perform some Initialization.
                this.data = null;
            },

            doSomething: function(param) {
                // some thing.
                this.data = param;
            }
        };

        return new classA();
    });

    // classB.js
    define(["classA"], function(classA) {
        var classB = new Class({

            initialize: function (regionId) {
                // perform some Initialization.
            },

            doSomethingElse: function() {
                // some thing.
                classA.doSomething("Go back to Work Now!");
            }
        };

        return classB;
    });


    // classC.js
    define(["classA"], function(classA) {
        var classB = new Class({

            initialize: function (regionId) {
                // perform some Initialization.
            },

            doSomethingElse: function() {
                // some thing.
                classA.doSomething("Time to Play!");
            }
        };

        return classC;
    });


    // main.js
    define(["classA", "classB", "classC"], function(classA, classB, classC) {
        var main = new Class({

            initialize: function (regionId) {
                // perform some Initialization.
                this.b = new classB();
                this.c = new classC();
            },

            doEverything: function() {
                // some thing.
                this.b.doSomethingElse();
                classA.doSomething("Nap Time!");
            }
        };

        return main;
    });

Muchas gracias de antemano ...

Respuestas a la pregunta(4)

Su respuesta a la pregunta