В Java у меня может быть объект a со множеством свойств, таких как getColor.Затем я мог бы создать второй объект b (возможно, того же класса), который ведет себя аналогично объекту a в том смысле, что он делает то же самое, что и a если только одно из его значений не было специально изменено (и тоже не изменено).
a = new Foo()
b = new FooWhichRefersToAnotherFoo(a)
a.getColor() # returns blue
b.getColor() # returns blue
a.setColor(red)
b.getColor() # returns red
b.setColor(pink)
b.getColor() # returns pink
a.getColor() # returns red (unchanged)
b.deleteChangeToColor()
b.getColor() # returns red as it is now pointing back to a
Я бы предположил, что это будет какая-то древовидная иерархия, как если бы я имел c , указывающий на b , указывающий на a ,объект будет обрабатывать цепочку до первого заданного значения или значения по умолчанию исходного непаренированного объекта.
Существует ли подобный шаблон, который хорошо работает с Java?Я ожидаю, что первый класс будет одним классом, а второй будет унаследованным классом, который отслеживает, к какому классу он относится, и если его собственное свойство не установлено, запрашивает родительский объект.
Я полагаю, что я могу сделать это сам, где каждый класс, который я делаю, я могу создать отдельный класс, такой как
class Foo {
Color color = new Color("red");
Color getColor() { color }
}
class FooInstance extends Foo {
Foo parent = null;
FooInstance(Foo parent) {
this.parent = parent;
}
Color getColor() {
if (color == null) return parent.getColor();
else return color;
}
}
, но хотел убедиться, что не было более легкого механизма для такого типаиспользуя javabeans или что-то.Одна проблема с наследованием заключается в том, что он предоставляет все методы родителя, хотя я хотел бы указать, какие из них действительно доступны в дочернем элементе, так что, может быть, это просто отдельный класс?