Я прочитал родительский класс с именем MyClass code, подобный этому,
public class MyClass extends CompositeObject{
protected Map<String,MyAttibute> attributes = new
HashMap<String,MyAttribute>
.....
}
В MyAttribute Class, Code вроде этого
public class MyAttibute extends MyObject
{
private MyClass definedOnClass;//point to its parentClass
}
Это на самом деле круговая ссылка.когда вы делаете глубокую серлизацию и равных.И это может быть не очень хороший дизайн. Как этого избежать?И после исправления, мы все еще можем легко найти parentClass по его атрибуту.
PS Я вижу еще два дизайна классов
public class Transaction{
private ChangeManager parentManager;
....
public Transaction(ChangeManager parentManager)
}
public class ChangeManager {
//record transaction when commit
private List<Transaction> transactions = new ArrayList<Transaction>();
Transaction currentTransaction;
....
}
Как вы думаете, этот тип дизайна хорош?Зачем?Как вы можете видеть, домены, которые определяют эти классы, довольно распространены.Так может кто-нибудь поделиться некоторым пониманием этого?Вредно ли сообщать Transaction свой ChangeManager и MyAttributes знать свой MyClass в своих свойствах?Любые комментарии приветствуются.Минусы и плюсы.