簡體   English   中英

如何使用 class B 的 object 設置 class A 的字段值? 類之間應該有什么類型的關系才能做到這一點?

[英]How to set field value of class A using an object of class B? What type of relationship should be between the classes to do so?

我有一個圖書館 class,它有一個圖書管理員和圖書列表,還有一個圖書管理員 class,它有一個 id 和 addBook 方法。 圖書管理員class可以在圖書館添加圖書。 這樣做的正確方法是什么?

public class Library 
{
 private Librarian librarian;
 private List<Book> books;
}

public class Librarian
{
 private int id;
 public boolean addBook(Book b);
}

addBook方法作為庫 class 的一部分可能會更好。然后您可以使用庫實例來做一些簡單的事情

 public boolean addBook(Book b) {
    books.add(b);
 }

在這種情況下, librarian將是程序的用戶。 但是您可能需要一種方法來從列表中獲取這本書。 您可能想要搜索更詳細的各種字段(關鍵字、標題等)並返回一本或多本匹配的書籍。 您不需要返回 boolean 除非您想確定該書是否已添加 (false) 或是否為新條目 (true)。

圖書管理員可以成為更多圖書館的圖書管理員嗎? 如果只有一個,那么我會給圖書館員 class 一個圖書館 object 並在構造函數中初始化它

public class Librarian
{
 private int id;
 private final Library library;
 public boolean addBook(Book b);

 public Librarian(final Library library) {
  this.library = library;
 }
}

添加吸氣劑。

然后你可以添加這樣一本書

librarian.getLibrary().addBook(book);

由於圖書管理員將書添加到圖書館並且圖書館擁有所有書籍,因此將方法addBook的實現放在圖書館 class 中看起來更好。

所以代碼會像這樣:

public class Library
{
    private Librarian librarian;
    private List<Book> books;

    public bool AddBook(Book book)
    {
        books.Add(book);
        return true;
    }
}

Libranian可以像這樣將一本書添加到圖書館中:

public class Librarian
{
    private int id;
    private Library library;

    public Librarian(Library library)
    {
        this.library = library;
    }


    public bool AddBook(Book b)
    {
        return library.AddBook(b);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM