Java 如何理解我的类的属性的属性是否已更改
我有以下课程Java 如何理解我的类的属性的属性是否已更改,java,design-patterns,Java,Design Patterns,我有以下课程 public class A { private int number; public int getNumber(){ return number; } public void setNumber(int number){ this.number = number; } } 然后是类B,它的属性是类a的对象 public class B { private A member; public A get
public class A {
private int number;
public int getNumber(){
return number;
}
public void setNumber(int number){
this.number = number;
}
}
然后是类B,它的属性是类a的对象
public class B {
private A member;
public A getMember() {
return member;
}
public void setMember(A member) {
this.member = member;
}
}
我想做的是在类A中的整数发生更改时通知类B
我希望通知机制不使用Observable和Observer。有什么想法吗?除了观察者模式之外,还有其他合适的模式吗
编辑:我不想再次使用observer的原因是因为类B已经扩展了java.util.Observable,我的最终目标是让类B的观察者知道
私人会员A
如果是合理的,您可以尝试使类A不可变。然后,当您更改一个对象时,您真正要做的是构造一个新的不可变对象(如字符串)。然后,若要获得机会A,则必须使用B的set方法,在更改任何内容时,将A替换为新的A 对于客户机来说,这种模式使用起来有点困难,但它确实意味着会自动通知类B,因为您只能通过调用set方法来更改B中a的一部分
基本上,当您使用此模式时,您只需想象A是一个字符串,因此创建一个新字符串,然后调用set,因为字符串是不可变的。将类A声明为接口,并在B中返回此接口的内部委托实现(代理模式) 像这样的
public interface A {
void setNumber(int n);
int getNumber();
}
public class B {
private A member;
private class AImpl implements A {
public void setNumber(int n) {
member.setNumber(n);
notifyB();
}
public int getNumber() {
int res = member.getNumber();
notifyB();
return res;
}
}
public A getMember() {
return new AImpl();
}
public void setMember(A member) {
this.member = member;
}
private void notifyB() {
// notification
}
}
或者,您也可以使用类
代理,但接口是实现这一点的首选方法。listener?或者你认为它类似于可观察的?是的,量子力学是可能的!说真的,简单地观察一下怎么样?一个侦听器/事件模式在这里可以很好地工作?你想实现什么?您可以使用从a到B的引用或类似事件总线的东西(例如),但在我看来,观察员最适合您的示例为什么这个奇怪的问题有三张赞成票?!