代码之家  ›  专栏  ›  技术社区  ›  Sigur

在sease/smalltalk中正确使用singleton模式

  •  2
  • Sigur  · 技术社区  · 11 年前

    我是一个学习Smalltalk并在Seaside开发应用程序的人。

    应用程序的第一部分将是所谓的管理端。在这一部分中,我可以定义/管理应用程序用户可以选择的项目。所有用户定义的所有项目都将相同。所以我创建了一个名为sportsController的类。

    我使用了这里定义的singleton模式: smalltalk singleton pattern: how do I initialize the instance variables? .

    在课堂上,我有:

    default
     ^ Default ifNil: [ Default := self new ]
    

    关于这个例子,我有:

    initialize 
        sports := OrderedCollection new.
    

    sports
    ^ sports
    

    当我调用视图时:

    manageSports
    view := SportsAdminView new model: SportsController default
    

    方法“manageSports”被调用为回调。当我运行视图时,将执行以下代码:

    renderContentOn: html 
    html anchor
        callback: [self addSport];
         with: 'Add new sport'.
    html
        unorderedList: [self model sports
                do: [:value | html
                        listItem: [self renderSport: value on: html]]].
    

    当我跑这个#运动是零。所以有一个MessageNotUnderstanded通知。所以我可能做错了什么;什么也就是说,有更好的方法吗?主要目标是创建所有会话都使用的类。

    顺便说一句,目前我还没有坚持,除了在图片中真正的“坚持”将在稍后处理。目前,我需要能够添加数据来开发应用程序的客户端。

    1 回复  |  直到 11 年前
        1
  •  1
  •   MartinW    11 年前

    你有可能打电话给我吗 SportsController default 添加之前的第一次 initialize 方法到实例端?在这种情况下,您的 初始化 从未调用过方法。

    因此,您可以通过 SportsController default initialize ,或者设置类变量 Default nil 然后再试一次。