public class Book {
private long ID;
private String details;
private static Set books;
public Book(long iD, String details) { ... }
public static void addBook(long iD, String details){....}
public void update() { }
public static void delete(Book b) { books.remove(b); }
public static Book find(long id){....}
};
public class User {
private long ID;
private String details;
private int accountType;
private static Set users;
public Book searchLibrary(long id) { return Book.find(id); }
public void renewMembership() { ... }
public static User find(long ID) {....}
public static void addUser(long ID, String details,int accountType) {
users.add(new User(ID, details, accountType));
}
public User(long iD, String details, int accountType) { ... }
}
public class OnlineReaderSystem {
private Book b;
private User u;
public OnlineReaderSystem(Book b, User u) { ... }
public void listenRequest() { }
public Book searchBook(long ID) { return Book.find(ID); }
public User searchUser(long ID){ return User.find(ID); }
public void display() { }
}
这是设计在线图书阅读器的数据结构问题的标准解决方案。我的问题是为什么我们要求在书中声明静态数据成员(私有静态集书籍)书籍class(用户类中的静态成员也一样)。这种方法的优点是什么? (删除了一些函数定义,以便我们可以避免与Java / C ++ / C#相关的答案,我只希望静态变量在所有这些面向对象语言中都可用)
答案 0 :(得分:0)
此代码使用课程Book
存储您应用中的所有图书,类似地,用户拥有所有用户的static
Set
。当数据成员为static
时,所有图书实例将共享相同的Set
图书,对用户也是如此。
这意味着您必须使用代码
Book.find(1, "details"); //assuming format for call, given language not stated
这确实有些奇怪。
另一种方法是形成书籍,用户等的集合,并在不在类中创建数据static
的情况下进行搜索。