【问题标题】:Which name is more correct in my case: manager or factory (or something else)?在我的情况下哪个名称更正确:经理或工厂(或其他)?
【发布时间】:2009-12-01 10:24:05
【问题描述】:

我有下一个代码:

PhotoFactory factory = PhotoFactory.getFactory (PhotoResource.PICASA);
PhotoSession session = factory.openSession (login, password);
PhotoAlbum album = factory.createAlbum ();
Photo photo = factory.createPhoto ();
album.addPhoto (photo);
if (session.canUpload ()) {
   session.uploadAlbum (album);
}
session.close ();

我不确定我选择了正确的名称。这不是那么重要,但我只是好奇你在我的情况下选择了什么。另一个版本是经理:

PhotoManager manager = PhotoManager.getManager (PhotoResource.PICASA);
PhotoSession session = manager.openSession (login, password);
PhotoAlbum album = manager.createAlbum ();
Photo photo = manager.createPhoto ();
album.addPhoto (photo);
if (session.canUpload ()) {
   session.uploadAlbum (album);
}
session.close ();

UPD:我刚刚在 hibernate javadocs 中找到了下一个示例:

 Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }

这是命名错误吗?

【问题讨论】:

    标签: naming variable-names


    【解决方案1】:

    在非常高的层次上,如果它只负责创建类的实例,我会称它为工厂;如果需要监督对象的持续存在,以及它们与其他对象的关系等,还有一个 Manager。

    在您发布的代码 sn-ps 中,您只是在创建对象,因此,在我看来,Factory 是一个合适的名称。尽管您应该记住该类的概念职责是什么以及它们将来是否会扩展。

    也就是说,我通常希望工厂不必担心创建会话本身,而是根据需要将会话传递到他们的 createFoo 调用中,因此在设置时肯定会有一些捏造因素。我个人认为我会有一些其他抽象实体负责创建会话,然后将它们传递给 PhotoFactory。

    【讨论】:

      【解决方案2】:

      我会选择第二种解决方案(管理器),因为以“Factory”结尾的对象通常被认为是工厂模式的实现,它本质上是创建对象的新实例。在您的示例中情况并非如此,因为它管理特定服务的会话。

      这个例子的好处是,事实上你的第一个静态方法调用getManager实际上是一个工厂,因为它创建了Manager对象的实例。

      【讨论】:

        猜你喜欢
        • 2016-11-29
        • 1970-01-01
        • 2017-11-25
        • 2014-09-01
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 1970-01-01
        • 2016-03-15
        相关资源
        最近更新 更多