Vì vậy, tôi có một vài lớp 'Quản lý', ví dụ như GroupManager. Tất cả những người quản lý này đều là những người độc thân.Generics Java, singletons và phương thức tĩnh
Sử dụng phương pháp này cho instancing:
private static GroupManager groupManager = null;
private GroupManager()
{
}
public static GroupManager Instance()
{
if (groupManager == null)
{
groupManager = new GroupManager();
}
return groupManager;
}
Tôi nghĩ tôi nên bắt đầu sử dụng một số thừa kế khi họ có rất nhiều phương pháp sao chép.
Phương thức Instance() cho mỗi Trình quản lý giống nhau.
Vì vậy, cho thừa kế tôi có thể làm được điều này (rõ ràng):
GroupManager extends Manager
Có thể sử dụng Generics để sử dụng phương pháp thẩm tương tự cho tất cả các nhà quản lý, một cái gì đó như:
public class Manager<E>
{
private static E instance = null;
public static E Instance()
{
if (instance == null)
{
instance = new E();
}
return instance;
}
}
Tôi nghĩ điều đó có ý nghĩa :)
Vì vậy, bạn sẽ làm GroupManager.Instance() như bình thường.
Java Generics là không có cách nào sự giống như C++ Templates! Để nó đi! Bạn không bao giờ có thể phân bổ một đối tượng (tức là gọi mới) bằng cách sử dụng một Java Generic. Thử tìm kiếm trên google cho "Java Type Erasure" – DwB
Related: http://stackoverflow.com/questions/1927789/why-should-i-care-that-java-doesnt-have-reified-generics – BalusC
Quản lý E là một tham chiếu đến loại chung. Không có cách nào đơn giản để thiết lập một lớp để phân bổ các đối tượng của một kiểu chỉ được biết đến trong thời gian chạy. Câu trả lời của Reid Mac là những gì tôi sẽ thử. –
DwB