设计关联类之间的连接

时间:2012-02-17 14:54:22

标签: java class

我在设计问题上需要帮助:

  

地图,道路和城市分为3类:

     

1.class Map HAS-A道路列表和城市列表

     

2.class Road有2个城市 - d和s。

     

3.class City HAS-道路清单

我需要设计从地图添加和删除道路的功能,同时它需要优雅和安全。

优雅 - 最少的代码和更高的效率

安全 - 所有相关类变量必须知道添加\删除。

  

注意:如果您在任何不通知的类上创建方法   其他类的更改,可能会被调用并破坏数据库。

我这样做的想法如下:

  

为每个类都有一个方法:

     

地图:addRoad(城市d,城市s)创建一条新道路(城市d,城市s)将其添加到其列表   并运行applyRoad()

     

道路:applyRoad()调用d.addRoad(this)和s.addRoad(this)

     

城市:addRoad(Road r)将道路添加到特定城市实例的道路列表

对于谁想知道的问题是,只有当编码器使用Map.addRoad()时才能正确地完成道路的添加,而在任何其他方面,数据库中都会缺少同步。 (可以调用road.applyRoad(),然后Map的列表将不会与更改同步)

1 个答案:

答案 0 :(得分:1)

中介模式是恰当的:

http://en.wikipedia.org/wiki/Mediator_pattern

调解员了解每个人。它解决了你的耦合问题。


NB: 在看了一个看起来很好的候选人的观察者模式之后,这是不可取的,因为:

  • good:模块化:主题和观察者可以独立变化
  • good:extensibility:可以定义和添加任意数量的观察者
  • 好:可定制性:不同的观察者提供不同的观点 主题
  • bad:意外更新:观察者不了解每一个 其他
  • bad:更新开销:可能需要提示

来源:http://en.wikibooks.org/wiki/Java_Programming/Design_Patterns#Observer