我有一本书课
Class Book
{
String name;
String id;
}
具有一些常规属性和一些其他库特定属性,因此库“xyz”中的书ID“111”具有title属性,而库“abc”中具有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库对书的重量感兴趣但是另一个库ZZZ不是?
在哪里增加重量属性? 即使我们创建了一个类WeightedBookInfo然后从它创建子类XYZBookInfo和ABCBookInfo,那么我们将不得不在两个类的实例中复制权重值!! !!
我正在尝试创建一个xcode核心数据模型来表示这种结构,但这并不重要,它是一个与技术无关的概念相关问题。
答案 0 :(得分:0)
您需要将智力内容与陈述区分开来,否则您将严重限制其有用性。此外,利用物理属性的泛化。也许吧:
具有标题和作者等属性的书籍类。 (这个类可能继承自出版物或其他东西。)
bookEdition的界面,包含ISBN,日期,出版商,格式(平装本,精装本,手机版,pdf等)
具有numberOfPages
的physicalPublication接口某种具有尺寸和重量的物理接口。