对于OO语言来说, 这样写代码的practice是不好的。。 因为这么写出来的代码耦合度很高! 所以很难修改。 在设计的时候需要仔细考虑oo principle, 然后根据SOLID 五大原则进行适当的设计,这样不管要怎么变数据,都是很轻松的事情。 毕竟我们能做到完全用object来表示想要表达的关系最正确的方法是根据SRP(单一责任原则)把这三个事物写成class,然后在class里边整理清楚他们的关系 举例说明, 我需要一个class用来作为著作public class Work { //name of the work, e.g. 早发白帝城 private String workName; //gets and sets }那么我可以写一个class 叫做诗人, 来满足你的描述public class Poet{ // Name of poet private String poetName; //the work created by the poet List<Work> authoredWork; }但同时, 诗人也可以作为一个作品的属性, 那么把诗人定义在work class里也是可以的, 这样的话就比较符合你下边想要的数据结构。public class Work { //name of the work, e.g. 早发白帝城 private String workName; private Poet author; //gets and sets } 而读者和诗的关系并不是那么密切, 所以最好的办法应该是用observer pattern 让读者可以自由subscribe要读什么诗。。 这样可以保证代码有最低的耦合度。
现在要把上面的map的数据转换成
读者-著作-诗人
即,读者 对应有很多著作,每个著作属于一个诗人
那不就是将
Map<String, Map<String, List<String>>> maps = new HashMap<String, Map<String, List<String>>>();
转成
Map<String,List<Map<String,String>>> maps = new HashMap<String,List<Map<String,String>>>();
第一个key的代表读者,value是一个List读者的著作,这个著作又是个Map著作存放的是诗人为key,著作的名称为value
现在要把上面的map的数据转换成
读者-著作-诗人
即,读者 对应有很多著作,每个著作属于一个诗人这里假设一个著作可以属于多个诗人怎么做,用java如何实现
在设计的时候需要仔细考虑oo principle, 然后根据SOLID 五大原则进行适当的设计,这样不管要怎么变数据,都是很轻松的事情。
毕竟我们能做到完全用object来表示想要表达的关系最正确的方法是根据SRP(单一责任原则)把这三个事物写成class,然后在class里边整理清楚他们的关系
举例说明,
我需要一个class用来作为著作public class Work {
//name of the work, e.g. 早发白帝城
private String workName;
//gets and sets
}那么我可以写一个class 叫做诗人, 来满足你的描述public class Poet{
// Name of poet
private String poetName;
//the work created by the poet
List<Work> authoredWork;
}但同时, 诗人也可以作为一个作品的属性, 那么把诗人定义在work class里也是可以的, 这样的话就比较符合你下边想要的数据结构。public class Work {
//name of the work, e.g. 早发白帝城
private String workName;
private Poet author;
//gets and sets
}
而读者和诗的关系并不是那么密切, 所以最好的办法应该是用observer pattern 让读者可以自由subscribe要读什么诗。。
这样可以保证代码有最低的耦合度。