📄 用什么模式或方法?.txt
字号:
用什么模式或方法?
http://www.shecn.com/best/g18/g1033.htm
该怎么办??用什么模式或方法?
--------------------------------------------------------------------------------
我使用Observer 模式写了一段代码
public interface Chart {
public void update()
}
public class LineChart implements Chart{
public void update(){
//根据数据的改变重化图
}
}
public class UserAgent extends DefaultDatasource{
// 可以 用 Chart 的update 方法更新图。
}
public interface Datasource {
public void notify();
}
public DefaultDatasource implement Datasource {
public void notify(){};
}
public MyFrame extends JFrame{
UserAgent ua[];
}
我想实现在用户界面上选择某个 UserAgent 时 在LineChart上显示被选中的
哪个UserAgent 的当前状态。
请赐教!!
01/10/23 15:53 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 没人理我吗?再补充点儿》》》》
--------------------------------------------------------------------------------
我有同一类A多个实例,使用一个图(View)观察他们,但每次
只显示一个实例的内部状态,当我在实例间切换(如,在拥护界面上
选择不同的)图(View)应该反映当前实例的内部状态???
不只用什么模式好些???
恳请赐教。。。
01/10/23 22:17 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
muyq 一般是多个Observer订阅一个或者一组相对稳定的SUBJECT实例.
--------------------------------------------------------------------------------
象你要用一个observer观察多个SUBJECT实例的情况.
1、在observer中增加转换代码,每次更换subject实例事件发生时,执行要放弃subject实例的detach方法,触发新subject实例的attach方法。然后运行self.update()
2、改造subject类,分离界面和实现,参照你的应用需要,有许多模式可帮助设计这种subject类,在实例更换事件会指示subject界面动态装入相关实例,然后向它的observer发出update的通知。
在Observer模式中,只描述了observer和subject的关系,没有描述observer接收用户输入的职责,由谁能向subject发送setstate()消息触发变换,没有具体的要求,当然,你的observer可以接收用户的输入然后负责向它的subject发送setstate()消息,但这不在Observer模式描述的范围之内。相关更好的实现是MVC结构。
01/10/24 12:06 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 抱歉:一不小心把“酷贴”评价抵消了,谢谢,
--------------------------------------------------------------------------------
我用了类似的方法,但没有你写的这样清楚。
很感谢!!!
不知有没有办法删掉“臭贴”评价?
01/10/24 13:00 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 明白了,,能否介绍一些MVC的资料??
--------------------------------------------------------------------------------
我对MVC了解的不是很多,
不知那里可以找到资料,如果你有可否mail我一份。
slovenboy@263.net
谢谢。。
01/10/24 13:07 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
ooworld 一点儿看法
--------------------------------------------------------------------------------
是否可以考虑将“observer中增加转换代码”单独分离出来,因为这部分功能其实不是observer的功能,observer应该相对比较简单,不需要知道这种切换的情况。另外,在observer中添加切换代码也在Subjects和Observer之间加强了耦合,这和设计模式的初衷是违背的。
将转换部单独用一个ChangeManger实现,observer想ChangeManger注册,ChangeManager维护着Subjects的引用。这样才真正实现了Observer和Subjects之间的解耦。
不知可否。
01/10/24 13:08 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
ooworld 我来给它加个1
--------------------------------------------------------------------------------
01/10/24 13:15 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 谢谢 ,, 呵呵。。。
--------------------------------------------------------------------------------
01/10/24 13:17 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 回复: 一点儿看法>> 可能最后真的得这样。。
--------------------------------------------------------------------------------
我边学习边写程序,没有设计。
所以,现在觉得很乱,
我在每次更改subject时,调用subject的notify方法,
在notify方法中调用Observer的update(this)方法,
把Subject自己的引用传给Observer,在update 方法内
更改他维护 的subject 应用所指向的对象!
这应该是“observer中增加转换代码”吧!!
加个ChangeManager可能好多了!! 但不太理解ChangeManager..
01/10/24 13:29 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
muyq 当然,可以演变成MVC模式。
--------------------------------------------------------------------------------
01/10/24 13:43 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
muyq 好多地方有MVC结构介绍和论文
--------------------------------------------------------------------------------
MVC全名叫model-viewer-controller,是SMALLTALK语言首先提出来的应用架构,关于它的文章在图片共享里有它的结构图,在文件共享里有它的相关文章,还有其它的网络资源,不枚胜举,介绍一个我认为比较好的入门论文链接http://www.csis.pace.edu/~bergin/mvc/mvcgui.html
祝好运!
01/10/24 13:56 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 回复: 好多地方有MVC结构介绍和论文>> 感谢, 再研究
--------------------------------------------------------------------------------
01/10/24 14:14 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
deborah.d 回复: 好多地方有MVC结构介绍和论文
--------------------------------------------------------------------------------
谢谢!
01/10/24 17:58 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
ooworld 其实这样我觉得挺好的,没有必要为模式而模式。
--------------------------------------------------------------------------------
ChangeManager专门用来管理与多个Subject连接的情况,处理Subject之间的切换,这样,可以在Subjects和Observer之间实现解耦,Observer只需向ChangeManager注册,而无需关心Subject的实现情况。这样比较符合简单的原则。
这样演变下去的话,其实就变成MVC了。
01/10/24 18:28 酷帖! 臭帖! 回复
酷帖评价: 臭帖评价:
返回页首
slovenboy 有点不明白????
--------------------------------------------------------------------------------
怎么就变成MVC 了呢??
你是说象如下的样子吗!!
M -> Subject
V -> Observer
C -> ChangeManager
是这样吗??
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -