问题描述
我上了一本书
Class Book
{
String name;
String id;
}
它具有一些常规属性,还具有其他一些库特定的属性,因此库“ xyz”中的书号“ 111”具有标题属性,而库“ abc”中的书号“ number”具有numberOfPages和尺寸,因此,它看起来像:
Class Book
{
String name;
String id;
String xyzTitle;
int abcNumberOfPages;
float abcHeight;
float abcWidth;
}
但是,这看起来不太好。 为什么不为图书信息创建单独的类
Class XYZBookInfo
{
String title;
}
Class ABCBookInfo
{
int numberOfPages;
float height;
float width;
}
Class Book
{
String name;
String id;
XYZBookInfo xyzInfo;
ABCBookInfo abcInfo;
}
到目前为止很好,但是; 如果几个库共享某些属性怎么办! 如果XYZ和ABC库对Book的重量感兴趣,而另一个ZZZ库不感兴趣?
在哪里增加重量属性? 即使我们创建一个WeightedBookInfo类,然后从中创建XYZBookInfo和ABCBookInfo子类,我们也必须在两个类的实例中复制权重值!
我正在尝试创建一个表示此结构的xcode核心数据模型,但这并不重要,这是一个与概念相关的问题,而不是特定于技术的问题。
1楼
NaturalData
0
2015-08-08 18:16:53
您需要将知识内容与表述分开,否则将严重限制其有用性。 另外,对物理属性也应加以概括。 所以也许:
具有属性(例如书名和作者)的书籍类。 (此类可以从出版物等继承。)
bookEdition的界面,该界面具有ISBN,日期,出版商,格式(平装书,精装书,手机,pdf等)
用于PhysicalPublication的接口,该接口将具有numberOfPages
具有尺寸和重量的某种物理接口。