[英]How to implement Singleton design pattern when class has subclasses?
[英]Design pattern with one class and 2 subclasses but without using inheritance
我需要實現一個帶有 2 個子類的 class ,主 class 包含變量id ,主類將變量發送到 2 個子類,在第一個子類中它可以更改變量的值,並且 mainClass 需要知道。 第二個子類在為第一個子類更改的數據庫中查找值id 。 我不能使用 inheritance 因為稍后我將使用其他第二個主要 class 並且我將需要使用兩個子類。
我需要使用我不知道的設計模式。
這是我的代碼示例。
//Main app
public class App {
public static void main(String[] args) {
MainPanel panel = MainPanel(20);
}
}
//Main panel
public class MainPanel {
int id;
public MainPanel(int id){
this.id = id;
}
}
//Subpanel Person
public class SubPanelPerson {
int id;
public SubPanelPerson() { }
public void changeValue() {
this.id = 30;
}
}
//Subpanel member
public class SubPanelmember {
int id;
public SubPanelMember() {}
public void findMember() {
find(id);
}
}
我認為這個解決方案,我現在只使用 1 個面板,但以后需要使用 2 個面板。 我用 2 個面板和 2 個子面板編寫解決方案。
class PanelBooks {
int id;
SubPanelPerson subPanelPerson = new SubPanelPerson(this);
SubPanelMember subPanelMember = new SubPanelMember(this);
public void setId(int id) { this.id = id; }
}
class PanelVideos {
int id;
SubPanelPerson subPanelPerson = new SubPanelPerson(this);
SubPanelMember subPanelMember = new SubPanelMember(this);
public void setId(int id) { this.id = id; }
}
class SubPanelPerson {
private PanelBooks panelBooks;
private PanelVideos panelVideos;
public SubPanelPerson(PanelBooks panelBooks) {
this.panelBooks = panelBooks;
}
public SubPanelPerson(PanelVideos panelVideos) {
this.panelVideos = panelVideos;
}
public void changeValueBooks(int id) { this.panelBooks.setId(id); }
public void changeValueVideos(int id) { this.panelVideos.setId(id); }
}
class SubPanelMember {
private PanelBooks panelBooks;
private PanelVideos panelVideos;
public SubPanelMember(PanelBooks panelBooks) {
this.panelBooks = panelBooks;
}
public SubPanelMember(PanelVideos panelVideos) {
this.panelVideos = panelVideos;
}
public void findMemberBooks() { System.out.println("Find ID: " + this.panelBooks.id); }
public void findMemberVideos() { System.out.println("Find ID: " + this.panelVideos.id); }
}
public static void main(String args[]) {
PanelBooks panelBooks = new PanelBooks();
PanelVideos panelVideos = new PanelVideos();
}
這是一個好的選擇還是可以改進?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.