Ես դրա համար ունեմ միանգամայն վավեր օգտագործման դեպք, և ես ուրախ եմ, որ դա թույլատրված է:
Եկեք մնանք, դուք ունեք դաս, որը ստեղծում է UI-ի կտորներ: Այն ընդունում է ինչ-որ տիրույթի օբյեկտ և ստեղծում է UI-ի մի հատված.
public Node createPersonUI(Person person) {
BasePanel panel = new BasePanel();
// ... setup panel with values ...
return panel;
}
BasePanel
-ը Node
-ի ենթադաս է և որոշ ներքին դաս է, որի հետ զանգահարողը գործ չունի, քանի որ այս դասը որոշում է, թե ինչ տեսք կունենան իրերը:
Այժմ, ես գտա, որ պետք է նորից օգտագործեմ այս դասի մի մասը, երբ պետք է աջակցեի նոր օբյեկտ, PersonalProfile
, որը պարունակում է շատ ավելի շատ տեղեկատվություն, բայց նաև պարունակում է հիմնական Person
տվյալները.
public Node createPersonalProfileUI(PersonalProfile profile) {
BasePanel panel = new BasePanel();
// ... setup panel with values ...
return panel;
}
Այնուամենայնիվ, այդ կոդը մասամբ կրկնօրինակված էր, ուստի ես արեցի.
public Node createPersonalProfileUI(PersonalProfile profile) {
BasePanel panel = (BasePanel)createPerson(profile.getPerson());
// ... only setup missing values ...
return panel;
}
Դերասանական կազմը, սակայն, մի փոքր ծիծաղելի է. այն փոխելով BasePanel
վերադարձնելու համար ոչ միայն աշխատում է, այլև չի բացահայտում իմ մասնավոր դասի որևէ գործառույթ: Փոխարենը, այն բացահայտում է միայն այն մեթոդները հանրային դասերից, որոնք նա ժառանգել է... փայլուն:
Ամբողջական կոդը.
public BasePanel createPersonUI(Person person) {
BasePanel panel = new BasePanel();
// ... setup panel with values ...
return panel;
}
public BasePanel createPersonalProfileUI(PersonalProfile profile) {
BasePanel panel = createPerson(profile.getPerson());
// ... only setup missing values ...
return panel;
}
private class BasePanel extends Node {
}
17.08.2018
Object
վերադարձից: 23.01.2018