Swing界面和模式

来源:互联网 发布:噪声测量数据 编辑:程序博客网 时间:2024/06/06 11:26



此界面是收银结账界面:SaleOrderTemp(临时订单)会传递给收银结账界面(CheckOutDialog).然后对订单进行相应的处理和验证


CheckOutDialog由MemberPanel(会员面板),FavorablePanel(优惠面板),CheckOutType(支付方式和接单方式面板),ButtomPanel(底部面板)

逻辑分析:

对于MemberPanel,FavorablePanel,CheckOutType三个面板,对于任何一个面板的改变,都可能涉及另外两个面板的界面改变,和对SaleOrderTemp的操作。

为了达到好的设计需求和维护性,应当采用好的设计。

首先分析CheckOutDialog和MemberPanel,FavorablePanel,CheckOutType的关系,CheckOUtDialog应该是负责接受三种面板的变化,然后对其余的面板做出相应的GUI

变化,所以CheckOutDialog可以作为观察者,而把其他面板作为主题,在把CheckoutDialog作为观察者的同事,也把其作为中介者,协调三个面板之间的关系。所有对于其

他界面的相应都应该在其中。所以我们可以在CheckOutDialog中定义一个其他三个面板调用的方法UpdateGUI()


其次对于CheckOutDialog和三个界面的参数传递,采用Visitor模式(不是设计模式中的Visitor,其实相当于传递对象参数).当中介者初始化三个面板的时候,会传递Visitor和observe对象给三个面板。在其他三个面板中对信息的改变对设置到Visitor中,这样在CheckOutDialog中的UpdateGUI就可以做相应的处理.


然后对于三个面板,MemberPanel,FavorablePanel,CheckOutType面板,经过分析,这三个面板对外的接口应该只有三个。首先CheckOutDialog会初始化三个面板,所以三个面板都应该有初始化构造函数,接受visitor和observer对象。还有当每次CheckOutDialog对话框,会初始化以前的参数到界面,所以这三个面板就会有restoreGuiInfo方法,其次,当其中任何一个面板改变的时候,都有可能涉及到剩下的面板的改变,所以三个面板都有自己的updatePanelGui方法,所以分析,三种方式如下

构成函数(Visitor,Observer)

restoreGuiInfo()

updatePanelGui()

不会在处在其他的方式,


可能大家还会有疑问,对于其中一个面板的改变,怎么让另外两个面板知道要改变,我们可以在Visitor中设置相关变量来判断。


所以对于这样一个GUI界面设计,就如分析上面这样。好的设计,对于以后的维护和修改,排错都很重要。对于不改暴露在外面的方法是绝对不要暴露,对于逻辑的控制

要集中在一处。这样对于以后的软件开发都是有很大的帮助




















原创粉丝点击