0

我是 JS 设计模式的新手,我想知道我是否做得对。我正在开发一个 HTML5 Go 游戏。所以我很自然地将我的代码分成文件,每个文件都实现了模块模式。例如,这是板(goban)文件:

var goban = (function() {
    var m_canvas = null,
        m_ctx = null,
        m_canvas_height = null,
        m_canvas_width = null;

    var drawLines = function(line_step, line_limit) {
        ...
    };

    var drawStars = function(first_star_coords, distance_btwn_stars, star_size) {
        ...
    };

    return {
        init: function(canvas, ctx) {
            m_canvas = canvas;
            m_ctx = ctx;
            m_canvas_width = canvas.width;
            m_canvas_height = canvas.height;

            m_ctx.beginPath();

            drawLines(30, 30);
            drawStars(120, 180, 5);

            m_ctx.strokeStyle = "black";
            m_ctx.stroke();
        }
    };
})();

我的主要代码文件:

var main = (function() {
    /* ================================================
    Variables
    =================================================== */
    var canvas = document.getElementById("goban");
    var ctx = canvas.getContext("2d");

    /* ================================================
    Calls
    =================================================== */
    goban.init(canvas, ctx);

    /* ================================================
    Events
    =================================================== */
    $(canvas).click(function(evt) {
        ...
    });
})();

goban 模块中的函数将使用 canvas 或 ctx 或两者。其他模块也是如此。这是一个好方法吗?我应该使我的“主”代码全局化还是应该在每个模块中编写构造函数(如“init”函数)?如果是这样,您如何向此模式添加构造函数?有没有更好的方法来实现这一目标?

4

0 回答 0