0
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() { }
 }

这是为设计在线图书阅读器的数据结构问题找到的标准解决方案。我的问题是为什么我们需要在图书类中声明静态数据成员(私有静态集合图书)图书(用户类中的静态成员也是如此)。这种方法的优点是什么?(删除了一些函数定义,这样我们就可以避免与 Java/C++/C# 相关的答案,我只希望静态变量在所有这些面向对象的语言中都可用)

4

1 回答 1

0

此代码使用一个类Book来存储应用程序中的所有书籍,类似地,用户拥有static Set所有用户中的一个。当数据成员为static时,所有书籍实例将共享相同Set的书籍,对于用户也是如此。
这意味着您必须使用代码编写

Book.find(1, "details"); //assuming format for call, given language not stated

这确实有点奇怪。
另一种方法是形成书籍、用户等的集合并在不制作static类中的数据的情况下进行搜索。

于 2013-08-19T10:42:37.087 回答