I. Wzorce kreacyjne 1. Singleton 2. Budowniczy 3. Prototyp 4. Fabryka 5. Fabryka abstrakcyjna II. Wzorce strukturalne 1. Adapter 2. Most 3. Kompozyt 4. Dekorator 5. Fasada 6. Pyłek 7. Pełnomocnik III. Wzorce czynnościowe 1. Łańcuch zobowiązań 2. Polecenie 3. Interpreter 4. Iterator 5. Mediator 6. Pamiątka 7. Obserwator 8. Stan 9. Strategia 10. Metoda szablonowa 11. Odwiedzający |
Budowniczy (builder) - wzorzec projektowy (design pattern) - java1. Cel:Wzorzec projektowy Budowniczy (builder) ma za zadanie ukryć złożoność tworzenia obiektów. Hermetyzuje i składa część złożonego obiektu w oddzielnym obiekcie konstruktora. 2. Problem: Budowniczy jest używany aby oddzielić budowę złożonego obiektu od jego reprezentacji. Proces budowy powoduje możliwość tworzenia różnych reprezentacji. Mamy do wyboru wiele parametrów oraz możliwe że chcemy ostateczny obiekt mieć niezmienny (immutable). 3. Rozwiązanie: A) budowniczy bandy czworga (Gang of Four) Wzorzec konstruktora sugeruje wyodrębnienie kodu konstrukcji obiektu z jego własnej klasy i przeniesienie go do oddzielnych obiektów zwanych konstruktorami. B) Budowniczy metoda łańcuchowa : Używamy statycznej wewnetrznej klasy (static inner class), która ma za zadanie przekazać parametry do konstruktora naszej klasy. 4. Diagram klas wzorca Budowniczy: A) wersja GoF (Gang of Four - bandy czworga): B) wersja budowniczy metoda łańcuchowa (chaining): 5. Implementacja: A) Budowniczy GoF Kod operujący na wzorcu w celu uzyskania konkretnej klasy:
B) Budowniczy metoda łańcuchowa Mamy klasę Pizza którą chcemy tworzyć, i aby była niezmienna (immutable):
Jeżeli nie chcielibyśmy obowiązkowych parametrów to tworzymy konstruktor bezargumenowy: public Builder() {} i wszystkie parametry które możemy wybrać są opcjonalne. Każda metoda której używamy w budowniczym zwraca this, co powoduje że możemy je użyć w jednym wywołaniu: Pizza mojeZamowienie = new Pizza.Builder("Cienkie ciasto", "Ser gouda").mieso("Salami").warzywa("kukurydza").build(); i jeszcze pozostaje nam stworzenie konstruktora w klasie Pizza obsługującą budowniczego (Builder).
- java.lang.StringBuilder#append() (unsynchronized) - java.lang.StringBuffer#append() (synchronized)
- java.nio.ByteBuffer#put() (również CharBuffer, ShortBuffer, IntBuffer, LongBuffer, FloatBuffer i DoubleBuffer) - javax.swing.GroupLayout.Group#addComponent() - wszystkie implementacje: java.lang.Appendable. |
---|