浏览 3076 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-08
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-11-08
。。。。。。。。你看DefaultTableModel里,定义了数据结构。
还定义了存取方式。 |
|
返回顶楼 | |
发表时间:2011-11-09
最后修改:2011-11-09
这个model是视图展示本身所需的model。
|
|
返回顶楼 | |
发表时间:2011-11-09
fnet 写道 。。。。。。。。你看DefaultTableModel里,定义了数据结构。
还定义了存取方式。 DefaultTableModel里面的setValueAt方法 public void setValueAt(Object aValue, int row, int column) { Vector rowVector = (Vector)dataVector.elementAt(row); rowVector.setElementAt(aValue, column); fireTableCellUpdated(row, column); } 这更像是一个controller的表现,因为他的两个行为:1.调用数据结构的方法改变数据结构本身,2.通知视图同步更新,都是controller的标准职责。我觉得DefaultTableModel就应该改名叫DefaultTableController,而他持有的引用dataVector才应该是model。也许是Swing的设计者为了简化类结构,故意把model和controller的行为合并了? |
|
返回顶楼 | |
发表时间:2011-11-09
不要急着看DefaultTableModel,直接看TableModel,定义的很清楚啊。
存取数据,以及发消息,这是很正常的Model的设计。 从接口设计上,根本看不出你所说的,1.调用数据结构的方法改变数据结构本身,2.通知视图同步更新。 再来看你说的DefaultTable,1.调用数据结构的方法改变数据结构本身,这是实现类内部的事情,而且Model不等于数据,所以它在自己内部处理数据是非常正常的。 2.通知视图同步更新,更与它无关,它只管发出消息,至于是通知视图同步更新,还是说,直接弹出对话框,它一点也不关心的。你可以试着在非Swing下用,根本不会出现视图更新。 |
|
返回顶楼 | |
发表时间:2011-11-09
naiyi 写道 fnet 写道 。。。。。。。。你看DefaultTableModel里,定义了数据结构。
还定义了存取方式。 DefaultTableModel里面的setValueAt方法 public void setValueAt(Object aValue, int row, int column) { Vector rowVector = (Vector)dataVector.elementAt(row); rowVector.setElementAt(aValue, column); fireTableCellUpdated(row, column); } 这更像是一个controller的表现,因为他的两个行为:1.调用数据结构的方法改变数据结构本身,2.通知视图同步更新,都是controller的标准职责。我觉得DefaultTableModel就应该改名叫DefaultTableController,而他持有的引用dataVector才应该是model。也许是Swing的设计者为了简化类结构,故意把model和controller的行为合并了? 您说的这两个都是model的职责,可以看写 GOF的模式,里面说过了,控制器更确切的说是输入控制器,component和里面的listener才是控制器,而TableUI是view。。 |
|
返回顶楼 | |
发表时间:2011-11-10
naiyi 写道 fnet 写道 。。。。。。。。你看DefaultTableModel里,定义了数据结构。
还定义了存取方式。 DefaultTableModel里面的setValueAt方法 public void setValueAt(Object aValue, int row, int column) { Vector rowVector = (Vector)dataVector.elementAt(row); rowVector.setElementAt(aValue, column); fireTableCellUpdated(row, column); } 这更像是一个controller的表现,因为他的两个行为:1.调用数据结构的方法改变数据结构本身,2.通知视图同步更新,都是controller的标准职责。我觉得DefaultTableModel就应该改名叫DefaultTableController,而他持有的引用dataVector才应该是model。也许是Swing的设计者为了简化类结构,故意把model和controller的行为合并了? 你这个跟我们公司的框架代码一模一样 |
|
返回顶楼 | |