Шаблон проектирования с одним классом и 2 подклассами, но без использования наследования - PullRequest
0 голосов
/ 05 апреля 2020

Мне нужно реализовать класс с 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 Ответ

0 голосов
/ 05 апреля 2020

Я думаю, что это решение, я сейчас использую только 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();

}

Это хороший вариант или его можно улучшить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...