我是学生项目的一部分,我们将为使用Java EE的公司开发产品。作为项目中的“首席架构师”,我负责撰写一个优秀的设计,该设计应该具有灵活性,可以进一步扩展。
背景信息:我们将开发一个带有拖放GUI的网站,可能会将数据源与数据操作连接起来,以对特定数据执行操作。 GUI应该是通用的,并且可以与即将推出的产品集成。这意味着我们无法编写表示层中的实现。相反,我们将使用一个接口来定义各种产品可能的数据操作类型。但是,每个产品也可能采用特定于产品的数据操作(从而使用更多方法扩展界面)。
我在上面的场景中遇到的问题是,我没有看到我们如何将这些“产品特定数据操作”传递给GUI,并说除了通用接口之外,我们还拥有这些数据操作操作。 ..
现在,我与公司的一些经验丰富的程序员进行了讨论,他们告诉我这个问题有一个共同的解决方案 - 更具体地说是“观察者模式”。他们在白板上绘制了类似[1]
的内容,并解释说可以“注册”给第三方(getApplicationContext),而第三方反过来可以传达我们的产品特定界面。他们解释说,这是摆脱那些令人讨厌的循环依赖的常见问题。
我现在已经看过观察者模式以及它是如何工作的,我仍然没有真正理解我应该如何解决设计问题。有人可能会尝试解释在我的具体情况下会如何产生?理解它如何与“主题”和“观察者”合作,我没有真正的问题。
以下是我们使用特定产品参考的设计的UML图。这是不受欢迎的,也是我们想要解决的问题。
(也许我错了......)
很抱歉,我无法将图片更改为正确的图片,因为我是新用户...以下是更新的UML图表的链接:
答案 0 :(得分:0)
您正在寻找的是Model View Controller设计模式。 Observer pattern只是此设计模式的一部分。在wikipedia article上使用来自Java EE的Java Servlets和JavaServer Pages执行此操作的简短描述。