Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
developer,
agile coach
@Pragmatists
właściciel
agile-elearning.pl
Krzysztof Jelski
krzysztof.jelski@pragmatists.pl@krzyszt...
• przykład
• historia
• przegląd
• jdk
• zasoby
Wzorce projektowe
Feature: Basic sales
Scenario: Standard order includes shipping cost
Given client wants to buy items:
| price | type |
| 1...
Scenario: Order of books only worth more than 200 is free
Given client wants to buy items:
| price | type |
| 100 | book |...
KOD
2 najlepsze zasady
projektowania obiektowego
1. Preferuj kompozycję nad dziedziczenie
2. Znajdź to co się zmienia i hermet...
Algorytm wyliczania całkowitego
kosztu zamówienia
● Oblicz koszt pozycji
● Oblicz koszt wysyłki
● Zsumuj
Standard
Promocja na
książki
Zagranica
Koszt
wysyłki
stała stawka
za darmo jeśli
> 200,
5 jeśli nie
stawka
międzynarodowa,...
SalesOrder
+getTotal()
LineItems
SalesOrder
+getTotal()
StandardSalesOrder
+getTotal()
BooksSalesOrder
+getTotal()
InternationalSalesOrder
+getTotal()
SalesOrder
+getTotal()
#shippingCost()
StandardSalesOrder
#shippingCost()
BooksSalesOrder
#shippingCost()
InternationalSal...
SalesOrder
+getTotal()
StandardShippingCost
#shippingCost()
BooksShippingCost
#shippingCost()
InternationalShippingCost
#s...
SalesOrder
+getTotal()
StandardShippingCost
#shippingCost()
BooksShippingCost
#shippingCost()
InternationalShippingCost
#s...
Strategy
algorithmInterface()
ConcreteStrategyB
algorithmInterface()
ConcreteStrategyA
algorithmInterface()
strategy
Conte...
Behawioralne
Strukturalne
Konstrukcyjne
• definiuje rodzinę wymiennych
algorytmów
• hermetyzuje je w postaci klas
• umożliwia wymianę algorytmów
niezależnie od kl...
• Możliwość zmiany zachowania
Kontekstu przez zmianę Strategii
• Mniej if-ów
• Klient musi znać różnice między
strategiami...
"Each pattern is a three-part rule, which
expresses a relation between a certain
context, a problem, and a solution."
-Chr...
23
• nazwa
• problem
• rozwiązanie
• konsekwencje
• nazwa
• intencja
• motywacja
• stosowalność
• struktura
• uczestnicy
• współpraca
• konsekwencje
• implementacja
• kod
•...
Silne Luźne
Niska Wysoka
SalesOrder
+getTotal()
StandardShippingCost
#shippingCost()
BooksShippingCost
#shippingCost()
InternationalShippingCost
#s...
• rozwiązania powracających
problemów
• nazwy ułatwiają komunikację
• luźne powiązania, wysoka spójność
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Wzorce projektowe at JInkubator
Upcoming SlideShare
Loading in …5
×

Wzorce projektowe at JInkubator

400 views

Published on

Slides from an introductory session on Design Patterns. Presented at jinkubator.pl, an initiative of Warsaw Jug aimed at beginner Java Developers. Thanks to Pragmatists for sponsoring the event and materials. Recording available at https://www.youtube.com/watch?v=RADOhncoohY

Published in: Software
  • Be the first to comment

  • Be the first to like this

Wzorce projektowe at JInkubator

  1. 1. developer, agile coach @Pragmatists właściciel agile-elearning.pl Krzysztof Jelski krzysztof.jelski@pragmatists.pl@krzysztofjelski
  2. 2. • przykład • historia • przegląd • jdk • zasoby Wzorce projektowe
  3. 3. Feature: Basic sales Scenario: Standard order includes shipping cost Given client wants to buy items: | price | type | | 100 | cd | | 100 | book | When client views the order summary Then total of the order is 215 Scenario: Order of books only has lower shipping cost Given client wants to buy items: | price | type | | 50 | book | | 50 | book | When client views the order summary Then total of the order is 105
  4. 4. Scenario: Order of books only worth more than 200 is free Given client wants to buy items: | price | type | | 100 | book | | 105 | book | When client views the order summary Then total of the order is 205 Scenario: International shipping of light items Given client wants to buy items: | price | weight | | 100 | 1 | And wants them delivered to 'Germany' When client views the order summary Then total of the order is 150 Scenario: International shipping of heavy items Given client wants to buy items: | price | weight | | 100 | 15 | And wants them delivered to 'Germany' When client views the order summary Then total of the order is 170
  5. 5. KOD
  6. 6. 2 najlepsze zasady projektowania obiektowego 1. Preferuj kompozycję nad dziedziczenie 2. Znajdź to co się zmienia i hermetyzuj to
  7. 7. Algorytm wyliczania całkowitego kosztu zamówienia ● Oblicz koszt pozycji ● Oblicz koszt wysyłki ● Zsumuj
  8. 8. Standard Promocja na książki Zagranica Koszt wysyłki stała stawka za darmo jeśli > 200, 5 jeśli nie stawka międzynarodowa, wyższa gdy zamówienie jest ciężkie
  9. 9. SalesOrder +getTotal() LineItems
  10. 10. SalesOrder +getTotal() StandardSalesOrder +getTotal() BooksSalesOrder +getTotal() InternationalSalesOrder +getTotal()
  11. 11. SalesOrder +getTotal() #shippingCost() StandardSalesOrder #shippingCost() BooksSalesOrder #shippingCost() InternationalSalesOrder #shippingCost()
  12. 12. SalesOrder +getTotal() StandardShippingCost #shippingCost() BooksShippingCost #shippingCost() InternationalShippingCost #shippingCost() ShippingCost +shippingCost(salesOrder)
  13. 13. SalesOrder +getTotal() StandardShippingCost #shippingCost() BooksShippingCost #shippingCost() InternationalShippingCost #shippingCost() ShippingCost +shippingCost(salesOrder)
  14. 14. Strategy algorithmInterface() ConcreteStrategyB algorithmInterface() ConcreteStrategyA algorithmInterface() strategy Context contextInterface()
  15. 15. Behawioralne Strukturalne Konstrukcyjne
  16. 16. • definiuje rodzinę wymiennych algorytmów • hermetyzuje je w postaci klas • umożliwia wymianę algorytmów niezależnie od klienta kontekstu
  17. 17. • Możliwość zmiany zachowania Kontekstu przez zmianę Strategii • Mniej if-ów • Klient musi znać różnice między strategiami by wybrać właściwą
  18. 18. "Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution." -Christopher Alexander
  19. 19. 23
  20. 20. • nazwa • problem • rozwiązanie • konsekwencje
  21. 21. • nazwa • intencja • motywacja • stosowalność • struktura • uczestnicy • współpraca • konsekwencje • implementacja • kod • zastosowania • powiązane wzorce
  22. 22. Silne Luźne
  23. 23. Niska Wysoka
  24. 24. SalesOrder +getTotal() StandardShippingCost #shippingCost() BooksShippingCost #shippingCost() InternationalShippingCost #shippingCost() ShippingCost +shippingCost(salesOrder)
  25. 25. • rozwiązania powracających problemów • nazwy ułatwiają komunikację • luźne powiązania, wysoka spójność

×