簡體   English   中英

具有一個 class 和 2 個子類但不使用 inheritance 的設計模式

[英]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.

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