Ponownie piszę kod i zdecydowałem, jak odtworzyć klasę, ponieważ jest ustalona liczba arkuszy, a ja tworzę je jako wyrazy . Jest to decyzja oparta na czytelności tupotu budowniczego względem konstruktora teleskopowego.Czy mogę użyć wzorca budowniczego na Java Enum
Kod Przechwytywam niektóre pliki .xls, dodaje nagłówki (i czyta niektóre z innych plików .xls) i może niektóre pod-arkusze. Następnie łączy on wiele różnych arkuszy w określony sposób, tworząc tabulatory w głównym skoroszycie programu Excel. Mój problem polega na tym, że niektóre zakładki skoroszytu przyjmują różną liczbę arkuszy jako argumenty. Próbuję zastosować wzór konstruktora. Jest to rodzaj kodu Próbuję napisać:
public enum workBookSheet {
mySheet1("Name1","mainSheet1.xls",true,1).addSubSheet("pathToSubSheet1.xls"),
mySheet2("Name2","mainSheet2.xls",true,2).addHeaderSheet("pathToHeaders.xls").addSubsheet("pathtoSubSheet2.xls");
private String tabName;
private String mainSheetName;
private Boolean available;
private Integer order;
private String subSheetName;
private String headerSheetName;
private workBookSheet(String tabName, String mainSheetName, Boolean available, Integer order){
this.tabName = tabName;
this.mainSheetName = mainSheetName;
this.available = available;
this.order = order;
}
public workBookSheet addSubSheet(String subSheetName){
this.subSheetName = subSheetName;
return this;
}
public workBookSheet addHeaderSheet(String headerSheetName){
this.headerSheetName = headerSheetName;
return this;
}
}
błędu, że java daje mi zdaje się mówić, że Java oczekuje moją deklarację enum (przecinek listę „konstruktorów enum” rozdzielany na górze) mieć tylko konstruktora, a nie dodatkowe metody. Mogę przenieść te metody do metody "konstruktora" poniżej, bez reklamacji.
public void buildSheets(){
mySheet1.addSubSheet("pathToSubSheet1.xls");
mySheet2.addHeaderSheet("pathToHeaders.xls").addSubSheet("pathtoSubSheet2.xls");
}
Czy to jedyny sposób na wdrożenie wzorca budowniczego w wyliczeniu? To wymaga ode mnie osobnej metody, która nie jest zbyt trudna. Czuję, że łamie ten schemat (chyba nie tak źle, jeśli to działa).
NB Dobrze się rozejrzałem, aby sprawdzić, czy ktoś zadał to pytanie lub w innym miejscu w Internecie. Najbliższe, jakie znalazłem, dotyczyło tutaj kwestii związanych z Enumami i Fabrykami, ale to nie jest odpowiedź na moje pytanie. Ponadto jestem świadomy, że nie jest to całkiem wzorzec konstruktora, ponieważ nie mam oddzielnej klasy, która akceptuje metodę build(), która tworzy nowe wyliczenie. Domyślam się, że to jest główny problem w moim początkowym projekcie, ale jestem stosunkowo nowy w Javie.
Czy istnieje lepszy sposób używania wzorca konstruktora w wyliczaniu Java? Czy jest to, co mam "wystarczająco blisko"?
Czy jest to coś, z czego już korzystałeś wcześniej, czy jest to nowy kod, który napisałeś jako przykład? – Pureferret
Trochę z obu. Chciałem użyć budowniczego, znalazłem kilka odpowiedzi, ale ich nie lubiłem i wymyśliłem to w ten sposób. Wtedy pomyślałem, że podzielę się moim rozwiązaniem w tym pytaniu na wypadek, gdyby pomógł komuś. –
Dziękuję bardzo! Dzięki temu moja klasa wyliczeń była znacznie bardziej czytelna. –