|
1 | 1 | # ☕ Java Design Patterns |
2 | 2 |
|
3 | | -## About |
| 3 | +## Strategy |
4 | 4 |
|
5 | | -This application is a simple Java Console Application that aims to implement design pattern examples to a Programmin Language Class. A set of design patterns will be developed |
6 | | -each week, and they are divided in different [branches](https://github.com/LBeghini/Java-Design-Patterns/branches). |
| 5 | +Strategy pattern lets the implementation of the method vary independently for whoever uses it. |
7 | 6 |
|
8 | | -The main branch is just a template for every other branch. |
| 7 | +For example, let's say we have an app that calculates the shortest path depending of the means of transportation. |
9 | 8 |
|
10 | | -Also, to make it easier to download the source code, [releases](https://github.com/LBeghini/Java-Design-Patterns/releases) are created related to the task of the week, giving a snapshot of the code for that specific implementation. |
| 9 | +- If you are going on foot, you want the shortest walking path. |
| 10 | +- If you are going by car, you want the shortest driving path. |
| 11 | +- If you are going by bicycle, you want the shortest cycling path. |
11 | 12 |
|
12 | | -## Implemented design patterns |
| 13 | +The calculation algorithms of each method may vary. On foot, it might be benefitial to search for paths that doesn't have many climbs. By car, traffic must be taken under consideration. By bicycle, the path must be calculated throught streets that have a bike lane. |
13 | 14 |
|
14 | | -### Behavioural patterns |
15 | | - |
16 | | -- [x] [Chain of responsibility](https://github.com/LBeghini/Java-Design-Patterns/tree/4-chain-of-responsibility) |
17 | | -- [ ] Command |
18 | | -- [x] [Iterator](https://github.com/LBeghini/Java-Design-Patterns/tree/4-iterator) |
19 | | -- [x] [Memento](https://github.com/LBeghini/Java-Design-Patterns/tree/5-memento) |
20 | | -- [x] [Observer](https://github.com/LBeghini/Java-Design-Patterns/tree/5-observer) |
21 | | -- [x] [State](https://github.com/LBeghini/Java-Design-Patterns/tree/3-state) |
22 | | -- [ ] Strategy |
23 | | -- [x] [Template method](https://github.com/LBeghini/Java-Design-Patterns/tree/4-template-method) |
24 | | - |
25 | | -### Creational patterns |
26 | | - |
27 | | -- [ ] Abstract factory |
28 | | -- [x] [Builder](https://github.com/LBeghini/Java-Design-Patterns/tree/1-builder) |
29 | | -- [x] [Factory method](https://github.com/LBeghini/Java-Design-Patterns/tree/2-factory-method) |
30 | | -- [x] [Prototype](https://github.com/LBeghini/Java-Design-Patterns/tree/2-prototype) |
31 | | -- [x] [Singleton](https://github.com/LBeghini/Java-Design-Patterns/tree/1-singleton) |
32 | | - |
33 | | -### Structural patterns |
34 | | - |
35 | | -- [ ] Adapter |
36 | | -- [ ] Bridge |
37 | | -- [ ] Composite |
38 | | -- [ ] Decorator |
39 | | -- [ ] Facade |
40 | | -- [ ] Flyweight |
41 | | -- [ ] Mediator |
42 | | -- [ ] Proxy |
43 | | - |
44 | | -## Technologies |
45 | | - |
46 | | -- Java |
47 | | -- JUnit |
48 | | -- Maven |
49 | | - |
50 | | -## Requirements |
51 | | - |
52 | | -To run and edit the project, be sure to have installed in your computer the following softwares: |
53 | | -- A code editor |
54 | | - |
55 | | -After that, you'll need to clone this repo: |
56 | | - |
57 | | -```bash |
58 | | -git clone https://github.com/LBeghini/Java-Design-Patterns.git |
59 | | -``` |
60 | | - |
61 | | -## Change branch |
62 | | - |
63 | | -To change to a different branch, run the command: |
64 | | - |
65 | | -```bash |
66 | | -git checkout name-of-the-branch |
67 | | -``` |
68 | | - |
69 | | -The branch names have the pattern: |
70 | | - |
71 | | -```bash |
72 | | -{number-of-the-week}-{pattern-name} |
73 | | -``` |
74 | | - |
75 | | -> `number-of-the-week` corresponds to the week asked to be implemented certain pattern |
76 | | -
|
77 | | -## Testing |
78 | | - |
79 | | -This project has no aim to run any of the implemented classes, as the goal is the code itself. However, the classes will be tested to visualize the behaviour and implementation |
80 | | -of the patterns. |
81 | | - |
82 | | -You can run the tests using the maven wrapper: |
83 | | - |
84 | | -```bash |
85 | | -./mvnw test |
86 | | -``` |
87 | | - |
88 | | -## :balance_scale: License |
89 | | - |
90 | | -[MIT License](https://github.com/LBeghini/Java-Design-Patterns/blob/main/LICENSE) |
| 15 | +So each one of these calculations would be a different strategy. |
0 commit comments