|
1 | 1 | # ☕ Java Design Patterns |
2 | 2 |
|
3 | | -## About |
| 3 | +## Iterator |
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 | +Iterator pattern is used to access sequentially a list of elements inside an object without having to know the object itself. |
7 | 6 |
|
8 | | -The main branch is just a template for every other branch. |
| 7 | +For example, let's suppose we have a shopping basket and want to add items on it. The cashier just needs to know that there's an item to pass, independent of the quantity. |
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 | +So, the methot to checkout the shopping items would be like this: |
11 | 10 |
|
12 | | -## Implemented design patterns |
| 11 | +```java |
| 12 | + public static Float checkout(ShoppingBasket shoppingBasket) { |
| 13 | + Float total = 0f; |
13 | 14 |
|
14 | | -### Behavioural patterns |
| 15 | + Screen.promptBanner(); |
15 | 16 |
|
16 | | -- [ ] Chain of responsability |
17 | | -- [ ] Command |
18 | | -- [ ] Iterator |
19 | | -- [ ] Memento |
20 | | -- [ ] Observer |
21 | | -- [x] [State](https://github.com/LBeghini/Java-Design-Patterns/tree/3-state) |
22 | | -- [ ] Strategy |
23 | | -- [ ] 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 |
| 17 | + for (Item item : shoppingBasket) { |
| 18 | + Screen.promptItem(item); |
| 19 | + total += item.getPrice(); |
| 20 | + } |
| 21 | + Screen.promptTotal(total); |
| 22 | + return total; |
| 23 | + } |
86 | 24 | ``` |
87 | 25 |
|
88 | | -## :balance_scale: License |
89 | | - |
90 | | -[MIT License](https://github.com/LBeghini/Java-Design-Patterns/blob/main/LICENSE) |
| 26 | +Notice that we can iterate trought the items with the shopping basket only, without having a declaration of a list of these items. |
0 commit comments