Banq:看了你的设计模式:Observer,有些疑问

02-09-17 JFML
你举的例子中

一个数据比如Name就要一个Observer

再来一个Price就要新建一个Observer

假如我一个商品,有100个属性,难道要100个Observer吗

请问如何解决这个问题?

浆糊
2002-09-17 15:04
可以使用一个方法作为执行listener的入口啊,例如

public void setChange(){

......

}

这样就 ok了。

如果你要观察某个属性的改变,那就需要在特定的属性中监听改变。或者你可以看一下sun的Observer的实现

JFML
2002-09-17 15:48
你好

可以具体地说说吗

比如写一些关键代码出来看看

谢谢

浆糊
2002-09-17 16:36
如果你是需要监听product的改变,还是某个属性的改变?

JFML
2002-09-17 20:15
我的具体需求如下:

数据库中有3个表,记录了以下信息:

一种产品(N个),有N个属性

我要监控后台管理程序对数据库的以下操作

1.增加一个产品

2.删除一个产品

3.更新某个产品的某个属性

4.更新某个产品的某几个属性

------------------------------

应该比较复杂吧,小弟洗耳恭听

JFML
2002-09-17 20:21
每次对数据库的操作

都要映射到一个products.xml上

也就是说

我往数据库增加一个产品

products.xml上就相应地增加了一个product元素

我更新了数据库中某个产品的某个属性

products.xml上就相应地更新了那个产品的那个属性

...........................

banq
2002-09-17 20:38
这个可能没必要使用observer

可是使用castor的数据库到XML复制的功能,这个功能可以roll back,也就是说具备事务跟踪机制,非常安全方便。

CrazyJavar
2002-09-18 00:23
板桥大哥

小弟已经开始按Observer那样做了:(

能否给点意见,如果您来用Observer做这个会......

望不吝赐教,多谢多谢

banq
2002-09-18 08:14
那你就对每个动作加个observer

可以把这些observer做成能自由添加,由一个程序来总体控制管理,类似jive中的filter管理器。

JFML
2002-09-18 10:00
可否贴一些关键代码出来看看?

angla
2002-11-07 18:35
> 你举的例子中

>

> 一个数据比如Name就要一个Observer

>

> 再来一个Price就要新建一个Observer

>

> 假如我一个商品,有100个属性,难道要100个Observer吗

>

> 请问如何解决这个问题?

实际上,Observer是针对class来的, 它是无法区分相同class类型的属性的变化的.

eg.

String name, description;

对于name和description的变化,Observer是无法区分的.

banq
2002-11-08 12:01
这篇文章可以解决多个observer带来的问题

http://www.javaworld.com/javaworld/javatips/jw-javatip29.html

猜你喜欢