gpt4 book ai didi

java - 具有 1 个类和 2 个子类但不使用继承的设计模式

转载 作者:行者123 更新时间:2023-12-01 17:35:54 24 4
gpt4 key购买 nike

我需要实现一个具有2个子类的类,主类包含变量id,主类将变量发送到2个子类,在第一个子类中它可以更改变量的值,并且mainClass需要知道。第二个子类在第一个子类更改的数据库中查找值id。我无法使用继承,因为稍后我将使用其他第二个主类,并且我将需要使用两个子类。

我需要使用一种我不知道的设计模式。

这是我的代码示例。

//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 个子面板编写解决方案。

enter image description here

 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();

}

这是一个好的选择还是可以改进?

关于java - 具有 1 个类和 2 个子类但不使用继承的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61042107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com