├── .idea
├── .gitignore
├── libraries
│ └── KotlinJavaRuntime.xml
├── misc.xml
├── modules.xml
├── uiDesigner.xml
└── vcs.xml
├── DesignPattern-Kotlin.iml
├── README.md
├── out
└── production
│ └── DesignPattern-Kotlin
│ ├── META-INF
│ └── DesignPattern-Kotlin.kotlin_module
│ ├── comportamental
│ ├── design_patterns
│ │ ├── ChainOfResponsibility.class
│ │ ├── ChainOfResponsibilityKt.class
│ │ ├── CommandKt.class
│ │ ├── Interpreter.class
│ │ ├── InterpreterKt.class
│ │ ├── IteratorKt.class
│ │ ├── MediatorKt.class
│ │ ├── MementoKt.class
│ │ ├── NullObject.class
│ │ ├── NullObjectKt.class
│ │ ├── ObserverKt.class
│ │ ├── StateKt.class
│ │ ├── StrategyKt.class
│ │ ├── TemplateMethodKt.class
│ │ └── VisitorKt.class
│ └── exemplos
│ │ ├── AbstractLogger$Companion.class
│ │ ├── AbstractLogger.class
│ │ ├── AndExpression.class
│ │ ├── BinaryObserver.class
│ │ ├── CareTaker.class
│ │ ├── ChatRoom.class
│ │ ├── ClienteAbstrato.class
│ │ ├── ClienteNulo.class
│ │ ├── ClienteReal.class
│ │ ├── ComprarEstoque.class
│ │ ├── Computador.class
│ │ ├── ConsoleLogger.class
│ │ ├── Container.class
│ │ ├── Context.class
│ │ ├── ContextStrategy.class
│ │ ├── Corretor.class
│ │ ├── Divisao.class
│ │ ├── ErrorLogger.class
│ │ ├── Estoque.class
│ │ ├── Expression.class
│ │ ├── FileLogger.class
│ │ ├── Football.class
│ │ ├── Game.class
│ │ ├── HexaObserver.class
│ │ ├── IniciarEstado.class
│ │ ├── Iterator.class
│ │ ├── MementoPattern.class
│ │ ├── Monitor.class
│ │ ├── Mouse.class
│ │ ├── Multiplicacao.class
│ │ ├── NameRepository$NameIterator.class
│ │ ├── NameRepository.class
│ │ ├── Observer.class
│ │ ├── OctalObserver.class
│ │ ├── OperationStrategy.class
│ │ ├── OrExpression.class
│ │ ├── Originator.class
│ │ ├── PararEstado.class
│ │ ├── ParteComputadorDisplayVisitor.class
│ │ ├── PartesComputador.class
│ │ ├── PartesComputadorVisitor.class
│ │ ├── Pedido.class
│ │ ├── Soma.class
│ │ ├── State.class
│ │ ├── Subtracao.class
│ │ ├── Sujeito.class
│ │ ├── Teclado.class
│ │ ├── TerminalExpression.class
│ │ ├── Usuario.class
│ │ ├── VenderEstoque.class
│ │ └── Volei.class
│ ├── criacao
│ ├── design_patterns
│ │ ├── AbstractFactoryKt.class
│ │ ├── BuilderKt.class
│ │ ├── FactoryKt.class
│ │ ├── FactoryMethodKt.class
│ │ ├── PrototypeKt.class
│ │ └── Singleton.class
│ └── exemplos
│ │ ├── BebidaGelada.class
│ │ ├── BlackColor.class
│ │ ├── BlueColor.class
│ │ ├── Cola.class
│ │ ├── Color.class
│ │ ├── ColorStore.class
│ │ ├── EmailNotification.class
│ │ ├── Embalagem.class
│ │ ├── Embrulho.class
│ │ ├── Garrafa.class
│ │ ├── Hamburguer.class
│ │ ├── HamburguerFrango.class
│ │ ├── HamburguerVegetariano.class
│ │ ├── Item.class
│ │ ├── Notification.class
│ │ ├── NotificationFactory.class
│ │ ├── Pepsi.class
│ │ ├── PushNotification.class
│ │ ├── Refeicao.class
│ │ ├── RefeicaoBuilder.class
│ │ ├── SingletonKt.class
│ │ └── SmsNotification.class
│ ├── estrutural
│ ├── design_patterns
│ │ ├── Adapter$Pato.class
│ │ ├── Adapter$PatoMarreco.class
│ │ ├── Adapter$Peru.class
│ │ ├── Adapter$PeruAdapter.class
│ │ ├── Adapter$PeruAustraliano.class
│ │ ├── Adapter.class
│ │ ├── AdapterKt.class
│ │ ├── BridgeKt.class
│ │ ├── CompositeKt.class
│ │ ├── DecoratorKt.class
│ │ ├── FacadeKt.class
│ │ ├── Flyweight.class
│ │ ├── FlyweightKt.class
│ │ └── ProxyKt.class
│ └── exemplos
│ │ ├── Circle.class
│ │ ├── CircleFlyweight.class
│ │ ├── Circulo.class
│ │ ├── CirculoDecorator.class
│ │ ├── CirculoVerde.class
│ │ ├── CirculoVermelho.class
│ │ ├── CriadorForma.class
│ │ ├── DesenhoAPI.class
│ │ ├── Empregado.class
│ │ ├── Forma.class
│ │ ├── FormaDecorator.class
│ │ ├── FormaVermelhaDecorator.class
│ │ ├── Formas.class
│ │ ├── Image.class
│ │ ├── ProxyImage.class
│ │ ├── RealImage.class
│ │ ├── Rectangle.class
│ │ ├── Retangulo.class
│ │ ├── Shape.class
│ │ ├── ShapeFactory.class
│ │ └── Square.class
│ └── uml
│ ├── NullObject.png
│ └── Strategy.png
└── src
├── comportamental
├── design_patterns
│ ├── ChainOfResponsibility.kt
│ ├── Command.kt
│ ├── Interpreter.kt
│ ├── Iterator.kt
│ ├── Mediator.kt
│ ├── Memento.kt
│ ├── NullObject.kt
│ ├── Observer.kt
│ ├── State.kt
│ ├── Strategy.kt
│ ├── TemplateMethod.kt
│ └── Visitor.kt
└── exemplos
│ ├── AbstractLogger.kt
│ ├── AndExpression.kt
│ ├── BinaryObserver.kt
│ ├── CareTaker.kt
│ ├── ChatRoom.kt
│ ├── ClienteAbstrato.kt
│ ├── ClienteNulo.kt
│ ├── ClienteReal.kt
│ ├── ComprarEstoque.kt
│ ├── Computador.kt
│ ├── ConsoleLogger.kt
│ ├── Container.kt
│ ├── Context.kt
│ ├── ContextStrategy.kt
│ ├── Corretor.kt
│ ├── Divisao.kt
│ ├── ErrorLogger.kt
│ ├── Estoque.kt
│ ├── Expression.kt
│ ├── FileLogger.kt
│ ├── Football.kt
│ ├── Game.kt
│ ├── HexaObserver.kt
│ ├── IniciarEstado.kt
│ ├── Iterator.kt
│ ├── MementoPattern.kt
│ ├── Monitor.kt
│ ├── Mouse.kt
│ ├── Multiplicacao.kt
│ ├── NameRepository.kt
│ ├── Observer.kt
│ ├── OctalObserver.kt
│ ├── OperationStrategy.kt
│ ├── OrExpression.kt
│ ├── Originator.kt
│ ├── PararEstado.kt
│ ├── ParteComputadorDisplayVisitor.kt
│ ├── PartesComputador.kt
│ ├── PartesComputadorVisitor.kt
│ ├── Pedido.kt
│ ├── Soma.kt
│ ├── State.kt
│ ├── Subtracao.kt
│ ├── Sujeito.kt
│ ├── Teclado.kt
│ ├── TerminalExpression.kt
│ ├── Usuario.kt
│ ├── VenderEstoque.kt
│ └── Volei.kt
├── criacao
├── design_patterns
│ ├── AbstractFactory.kt
│ ├── Builder.kt
│ ├── Factory.kt
│ ├── FactoryMethod.kt
│ ├── Prototype.kt
│ ├── Singleton.kt
│ ├── abstract_factory
│ │ ├── AbstractFactoryPattern.kt
│ │ ├── Producer.kt
│ │ ├── Rectangle.kt
│ │ ├── RoundedRectangle.kt
│ │ ├── RoundedShapeFactory.kt
│ │ ├── RoundedSquare.kt
│ │ ├── Shape.kt
│ │ ├── ShapeFactory.kt
│ │ └── Square.kt
│ └── factory
│ │ ├── Circle.kt
│ │ └── ShapeFactory.kt
└── exemplos
│ ├── BebidaGelada.kt
│ ├── BlackColor.kt
│ ├── BlueColor.kt
│ ├── Cola.kt
│ ├── Color.kt
│ ├── ColorStore.kt
│ ├── EmailNotification.kt
│ ├── Embalagem.kt
│ ├── Embrulho.kt
│ ├── Garrafa.kt
│ ├── Hamburguer.kt
│ ├── HamburguerFrango.kt
│ ├── HamburguerVegetariano.kt
│ ├── Item.kt
│ ├── Notification.kt
│ ├── Pepsi.kt
│ ├── PushNotification.kt
│ ├── Refeicao.kt
│ ├── RefeicaoBuilder.kt
│ ├── Singleton.kt
│ └── SmsNotification.kt
├── estrutural
├── design_patterns
│ ├── Adapter.kt
│ ├── Bridge.kt
│ ├── Composite.kt
│ ├── Decorator.kt
│ ├── Facade.kt
│ ├── Flyweight.kt
│ └── Proxy.kt
└── exemplos
│ ├── Circle.kt
│ ├── CircleFlyweight.kt
│ ├── Circulo.kt
│ ├── CirculoDecorator.kt
│ ├── CirculoVerde.kt
│ ├── CirculoVermelho.kt
│ ├── CriadorForma.kt
│ ├── DesenhoAPI.kt
│ ├── Empregado.kt
│ ├── Forma.kt
│ ├── FormaDecorator.kt
│ ├── FormaVermelhaDecorator.kt
│ ├── Formas.kt
│ ├── Image.kt
│ ├── ProxyImage.kt
│ ├── RealImage.kt
│ ├── Rectangle.kt
│ ├── Retangulo.kt
│ ├── Shape.kt
│ ├── ShapeFactory.kt
│ └── Square.kt
├── imagens
├── abstract-factory.png
├── adapter.png
├── bridge.png
├── builder.png
├── chain-of-responsibility.png
├── command.png
├── composite.png
├── decorator.png
├── facade.png
├── factory-method.png
├── factory.png
├── flyweight.png
├── iterator.png
├── mediator.png
├── memento.png
├── observer.png
├── prototype.png
├── proxy&decorator.png
├── proxy.png
├── singleton.png
├── state.png
├── strategy.png
├── template-method.png
└── visitor.png
└── uml
├── NullObject.png
└── Strategy.png
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/libraries/KotlinJavaRuntime.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/DesignPattern-Kotlin.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/META-INF/DesignPattern-Kotlin.kotlin_module:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/META-INF/DesignPattern-Kotlin.kotlin_module
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/ChainOfResponsibility.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/ChainOfResponsibility.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/ChainOfResponsibilityKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/ChainOfResponsibilityKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/CommandKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/CommandKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/Interpreter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/Interpreter.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/InterpreterKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/InterpreterKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/IteratorKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/IteratorKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/MediatorKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/MediatorKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/MementoKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/MementoKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/NullObject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/NullObject.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/NullObjectKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/NullObjectKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/ObserverKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/ObserverKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/StateKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/StateKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/StrategyKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/StrategyKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/TemplateMethodKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/TemplateMethodKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/design_patterns/VisitorKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/design_patterns/VisitorKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/AbstractLogger$Companion.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/AbstractLogger$Companion.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/AbstractLogger.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/AbstractLogger.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/AndExpression.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/AndExpression.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/BinaryObserver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/BinaryObserver.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/CareTaker.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/CareTaker.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ChatRoom.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ChatRoom.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ClienteAbstrato.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ClienteAbstrato.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ClienteNulo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ClienteNulo.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ClienteReal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ClienteReal.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ComprarEstoque.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ComprarEstoque.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Computador.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Computador.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ConsoleLogger.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ConsoleLogger.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Container.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Container.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Context.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Context.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ContextStrategy.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ContextStrategy.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Corretor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Corretor.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Divisao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Divisao.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ErrorLogger.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ErrorLogger.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Estoque.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Estoque.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Expression.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Expression.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/FileLogger.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/FileLogger.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Football.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Football.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Game.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Game.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/HexaObserver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/HexaObserver.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/IniciarEstado.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/IniciarEstado.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Iterator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Iterator.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/MementoPattern.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/MementoPattern.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Monitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Monitor.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Mouse.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Mouse.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Multiplicacao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Multiplicacao.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/NameRepository$NameIterator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/NameRepository$NameIterator.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/NameRepository.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/NameRepository.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Observer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Observer.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/OctalObserver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/OctalObserver.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/OperationStrategy.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/OperationStrategy.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/OrExpression.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/OrExpression.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Originator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Originator.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/PararEstado.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/PararEstado.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/ParteComputadorDisplayVisitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/ParteComputadorDisplayVisitor.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/PartesComputador.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/PartesComputador.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/PartesComputadorVisitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/PartesComputadorVisitor.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Pedido.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Pedido.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Soma.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Soma.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/State.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/State.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Subtracao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Subtracao.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Sujeito.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Sujeito.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Teclado.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Teclado.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/TerminalExpression.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/TerminalExpression.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Usuario.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Usuario.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/VenderEstoque.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/VenderEstoque.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/comportamental/exemplos/Volei.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/comportamental/exemplos/Volei.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/design_patterns/AbstractFactoryKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/design_patterns/AbstractFactoryKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/design_patterns/BuilderKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/design_patterns/BuilderKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/design_patterns/FactoryKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/design_patterns/FactoryKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/design_patterns/FactoryMethodKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/design_patterns/FactoryMethodKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/design_patterns/PrototypeKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/design_patterns/PrototypeKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/design_patterns/Singleton.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/design_patterns/Singleton.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/BebidaGelada.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/BebidaGelada.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/BlackColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/BlackColor.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/BlueColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/BlueColor.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Cola.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Cola.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Color.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Color.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/ColorStore.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/ColorStore.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/EmailNotification.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/EmailNotification.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Embalagem.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Embalagem.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Embrulho.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Embrulho.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Garrafa.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Garrafa.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Hamburguer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Hamburguer.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/HamburguerFrango.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/HamburguerFrango.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/HamburguerVegetariano.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/HamburguerVegetariano.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Item.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Item.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Notification.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Notification.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/NotificationFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/NotificationFactory.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Pepsi.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Pepsi.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/PushNotification.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/PushNotification.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/Refeicao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/Refeicao.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/RefeicaoBuilder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/RefeicaoBuilder.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/SingletonKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/SingletonKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/criacao/exemplos/SmsNotification.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/criacao/exemplos/SmsNotification.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$Pato.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$Pato.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$PatoMarreco.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$PatoMarreco.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$Peru.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$Peru.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$PeruAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$PeruAdapter.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$PeruAustraliano.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter$PeruAustraliano.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Adapter.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/AdapterKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/AdapterKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/BridgeKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/BridgeKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/CompositeKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/CompositeKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/DecoratorKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/DecoratorKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/FacadeKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/FacadeKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Flyweight.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/Flyweight.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/FlyweightKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/FlyweightKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/design_patterns/ProxyKt.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/design_patterns/ProxyKt.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Circle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Circle.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/CircleFlyweight.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/CircleFlyweight.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Circulo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Circulo.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/CirculoDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/CirculoDecorator.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/CirculoVerde.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/CirculoVerde.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/CirculoVermelho.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/CirculoVermelho.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/CriadorForma.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/CriadorForma.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/DesenhoAPI.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/DesenhoAPI.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Empregado.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Empregado.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Forma.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Forma.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/FormaDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/FormaDecorator.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/FormaVermelhaDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/FormaVermelhaDecorator.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Formas.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Formas.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Image.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Image.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/ProxyImage.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/ProxyImage.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/RealImage.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/RealImage.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Rectangle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Rectangle.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Retangulo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Retangulo.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Shape.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Shape.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/ShapeFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/ShapeFactory.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/estrutural/exemplos/Square.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/estrutural/exemplos/Square.class
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/uml/NullObject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/uml/NullObject.png
--------------------------------------------------------------------------------
/out/production/DesignPattern-Kotlin/uml/Strategy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/out/production/DesignPattern-Kotlin/uml/Strategy.png
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/ChainOfResponsibility.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.AbstractLogger
4 | import comportamental.exemplos.AbstractLogger.Companion.DEBUG
5 | import comportamental.exemplos.AbstractLogger.Companion.ERROR
6 | import comportamental.exemplos.AbstractLogger.Companion.INFO
7 | import comportamental.exemplos.ConsoleLogger
8 | import comportamental.exemplos.ErrorLogger
9 | import comportamental.exemplos.FileLogger
10 |
11 | /**
12 | * @author RubioAlves
13 | * Created 15/06/2021 at 16:36
14 | */
15 | class ChainOfResponsibility {
16 |
17 | fun getChainOfLoggers(): AbstractLogger {
18 |
19 | val errorLogger = ErrorLogger(ERROR)
20 | val fileLogger = FileLogger(DEBUG)
21 | val consoleLogger = ConsoleLogger(INFO)
22 |
23 | errorLogger.nextLogger = fileLogger
24 | fileLogger.nextLogger = consoleLogger
25 |
26 | return errorLogger
27 |
28 | }
29 |
30 | }
31 |
32 | fun main() {
33 |
34 | val loggerChain = ChainOfResponsibility().getChainOfLoggers()
35 | loggerChain.logMessage(INFO, "This is an information.")
36 | loggerChain.logMessage(DEBUG, "This is an debug level information.")
37 | loggerChain.logMessage(ERROR, "This is an error information.")
38 |
39 | //Saída
40 |
41 | //Standard Console::Logger:This is an information.
42 | //File::Logger:This is an debug level information.
43 | //Standard Console::Logger:This is an debug level information.
44 | //Error Console::Logger:This is an error information.
45 | //File::Logger:This is an error information.
46 | //Standard Console::Logger:This is an error information.
47 |
48 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Command.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:37
8 | */
9 | fun main() {
10 |
11 | val estoque = Estoque()
12 |
13 | val comprarPedidosEstoque = ComprarEstoque(estoque)
14 | val venderPedidosEstoque = VenderEstoque(estoque)
15 |
16 | val corretor = Corretor()
17 | corretor.levarPedido(comprarPedidosEstoque)
18 | corretor.levarPedido(venderPedidosEstoque)
19 |
20 | corretor.colocarPedidos()
21 |
22 | //Saida
23 |
24 | //Estoque [Nome: ABC, Quantidade: 10] comprado
25 | //Estoque [Nome: ABC, Quantidade: 10] vendido
26 |
27 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Interpreter.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.AndExpression
4 | import comportamental.exemplos.Expression
5 | import comportamental.exemplos.OrExpression
6 | import comportamental.exemplos.TerminalExpression
7 |
8 | /**
9 | * @author RubioAlves
10 | * Created 15/06/2021 at 16:37
11 | */
12 | class Interpreter {
13 |
14 | //Regra: Roberto e John são do gênero masculino
15 | fun getMaleExpression(): Expression {
16 |
17 | val roberto = TerminalExpression("Roberto")
18 | val john = TerminalExpression("John")
19 |
20 | return OrExpression(roberto, john)
21 |
22 | }
23 | //Regra: Julia é uma mulher casada
24 | fun getMarriedWomanExpression(): Expression {
25 |
26 | val julia = TerminalExpression("Julia")
27 | val married = TerminalExpression("Casada")
28 |
29 | return AndExpression(julia, married)
30 | }
31 |
32 | }
33 | fun main() {
34 |
35 | val isMale = Interpreter().getMaleExpression()
36 | val isMarriedWoman = Interpreter().getMarriedWomanExpression()
37 |
38 | println("John é do gênero masculino? Resposta: ${isMale.interpret("John")}")
39 | println("Julia é uma mulher casada? Resposta: ${isMarriedWoman.interpret("Julia Casada")}")
40 |
41 | //Saída
42 |
43 | //John é do gênero masculino? Resposta: true
44 | //Julia é uma mulher casada? Resposta: true
45 |
46 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Iterator.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.NameRepository
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:37
8 | */
9 | fun main() {
10 |
11 | val namesRepository = NameRepository()
12 |
13 | val iterator = namesRepository.getIterator()
14 |
15 | while (iterator.hasNext()){
16 | val name = iterator.next() as String
17 | println("Nome: $name")
18 | }
19 |
20 | //Saída
21 |
22 | //Nome: Roberto
23 | //Nome: John
24 | //Nome: Julia
25 | //Nome: Larissa
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Mediator.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.Usuario
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:37
8 | */
9 | fun main() {
10 |
11 | val robert = Usuario("Roberto")
12 | val john = Usuario("John")
13 |
14 | robert.enviarMensagem("Olá! John")
15 | john.enviarMensagem("Oi! Roberto")
16 |
17 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Memento.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.CareTaker
4 | import comportamental.exemplos.Originator
5 |
6 | /**
7 | * @author RubioAlves
8 | * Created 15/06/2021 at 16:38
9 | */
10 |
11 | fun main() {
12 |
13 | val originator = Originator()
14 | val careTaker = CareTaker()
15 |
16 | originator.state = "State #1"
17 | originator.state = "State #2"
18 | careTaker.add(originator.saveStateToMemento())
19 |
20 | originator.state = "State #3"
21 | careTaker.add(originator.saveStateToMemento())
22 |
23 | originator.state = "State #4"
24 | println("Current State: ${originator.state}")
25 |
26 | originator.getStateFromMemento(careTaker.getIndex(0))
27 | println("First saved state: ${originator.state}")
28 | originator.getStateFromMemento(careTaker.getIndex(1))
29 | println("Second saved state: ${originator.state}")
30 |
31 | //Saída
32 |
33 | //Current State: State #4
34 | //First saved state: State #2
35 | //Second saved state: State #3
36 |
37 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/NullObject.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.ClienteAbstrato
4 | import comportamental.exemplos.ClienteNulo
5 | import comportamental.exemplos.ClienteReal
6 |
7 | /**
8 | * @author RubioAlves
9 | * Created 15/06/2021 at 16:42
10 | */
11 | class NullObject {
12 |
13 | private val listaNomes = listOf("Lucas", "João", "Maria")
14 |
15 | fun getCliente(nome: String): ClienteAbstrato {
16 |
17 | listaNomes.forEach { nomes ->
18 |
19 | if (nomes == nome) {
20 | return ClienteReal(nome)
21 | }
22 |
23 | }
24 |
25 | return ClienteNulo()
26 |
27 | }
28 |
29 | }
30 |
31 | fun main() {
32 |
33 |
34 | val cliente1 = NullObject().getCliente("Lucas")
35 | val cliente2 = NullObject().getCliente("Marcelo")
36 | val cliente3 = NullObject().getCliente("Maria")
37 | val cliente4 = NullObject().getCliente("Matheus")
38 |
39 | println("Clientes\n")
40 | println(cliente1.getNome())
41 | println(cliente2.getNome())
42 | println(cliente3.getNome())
43 | println(cliente4.getNome())
44 |
45 | //Saída
46 | //Clientes
47 |
48 | //Lucas
49 | //Não existe esse nome na lista
50 | //Maria
51 | //Não existe esse nome na lista
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Observer.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.BinaryObserver
4 | import comportamental.exemplos.HexaObserver
5 | import comportamental.exemplos.OctalObserver
6 | import comportamental.exemplos.Sujeito
7 |
8 | /**
9 | * @author RubioAlves
10 | * Created 15/06/2021 at 16:38
11 | */
12 | fun main() {
13 |
14 | val sujeito = Sujeito()
15 | HexaObserver(sujeito)
16 | OctalObserver(sujeito)
17 | BinaryObserver(sujeito)
18 |
19 | println("O primeiro estado muda para: 15")
20 | sujeito.state = 15
21 | println("O segundo estado muda para: 10")
22 | sujeito.state = 10
23 |
24 | //Saída
25 |
26 | //O primeiro estado muda para: 15
27 | //Hexa String: F
28 | //Octal String: 17
29 | //Binary String: 1111
30 |
31 | //O segundo estado muda para: 10
32 | //Hexa String: A
33 | //Octal String: 12
34 | //Binary String: 1010
35 |
36 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/State.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.Context
4 | import comportamental.exemplos.IniciarEstado
5 | import comportamental.exemplos.PararEstado
6 |
7 | /**
8 | * @author RubioAlves
9 | * Created 15/06/2021 at 16:38
10 | */
11 | fun main() {
12 |
13 | val context = Context()
14 |
15 | val iniciarEstado = IniciarEstado()
16 | iniciarEstado.doAction(context)
17 |
18 | println(context.state.toString())
19 |
20 | val pararEstado = PararEstado()
21 | pararEstado.doAction(context)
22 |
23 | println(context.state.toString())
24 |
25 | //Saída
26 | //O jogador iniciou o estado
27 | //Estado Iniciado
28 | //O jogador parou o estado
29 | //Estado Parado
30 |
31 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Strategy.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:38
8 | */
9 | fun main() {
10 |
11 | val soma = ContextStrategy(Soma())
12 | println("10 + 5 = ${soma.executeOperation(10.0, 5.0)}")
13 | val subtracao = ContextStrategy(Subtracao())
14 | println("10 - 5 = ${subtracao.executeOperation(10.0, 5.0)}")
15 | val multiplicacao = ContextStrategy(Multiplicacao())
16 | println("10 * 5 = ${multiplicacao.executeOperation(10.0, 5.0)}")
17 | val divisao = ContextStrategy(Divisao())
18 | println("10 / 5 = ${divisao.executeOperation(10.0, 5.0)}")
19 |
20 | //Saída
21 | //10 + 5 = 15.0
22 | //10 - 5 = 5.0
23 | //10 * 5 = 50.0
24 | //10 / 5 = 2.0
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/TemplateMethod.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.Football
4 | import comportamental.exemplos.Game
5 | import comportamental.exemplos.Volei
6 |
7 | /**
8 | * @author RubioAlves
9 | * Created 15/06/2021 at 16:39
10 | */
11 |
12 | fun main() {
13 |
14 | var game: Game = Volei()
15 | game.play()
16 | println()
17 | game = Football()
18 | game.play()
19 |
20 | //Saída de dados
21 | /*
22 | Volei Game Initialized! Start playing.
23 | Volei Game Started. Enjoy the game!
24 | Volei Game Finished!
25 |
26 | Football Game Initialized! Start playing.
27 | Football Game Started. Enjoy the game!
28 | Football Game Finished!
29 | */
30 |
31 | }
--------------------------------------------------------------------------------
/src/comportamental/design_patterns/Visitor.kt:
--------------------------------------------------------------------------------
1 | package comportamental.design_patterns
2 |
3 | import comportamental.exemplos.*
4 |
5 |
6 | /**
7 | * @author RubioAlves
8 | * Created 15/06/2021 at 16:39
9 | */
10 | fun main() {
11 |
12 | val computador: PartesComputador = Computador()
13 | computador.aceitar(ParteComputadorDisplayVisitor())
14 |
15 | //Saída
16 |
17 | //Displaying Mouse.
18 | //Displaying Teclado.
19 | //Displaying Monitor.
20 | //Displaying Computador.
21 |
22 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/AbstractLogger.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | abstract class AbstractLogger {
4 |
5 | companion object {
6 | const val INFO = 1
7 | const val DEBUG = 2
8 | const val ERROR = 3
9 | }
10 |
11 | var nextLogger: AbstractLogger? = null
12 |
13 | open var level = 0
14 |
15 | open fun logMessage(level: Int, message: String?) {
16 | if (this.level <= level) {
17 | write(message)
18 | }
19 | nextLogger?.logMessage(level, message)
20 | }
21 |
22 | protected abstract fun write(message: String?)
23 |
24 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/AndExpression.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class AndExpression(private val firstExpression: Expression, private val secondExpression: Expression): Expression {
4 | override fun interpret(context: String): Boolean = firstExpression.interpret(context) && secondExpression.interpret(context)
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/BinaryObserver.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class BinaryObserver(private val sujeito: Sujeito) : Observer() {
4 |
5 | init {
6 | sujeito.attach(this)
7 | }
8 |
9 | override fun atualizar() = println("Binary String: ${Integer.toBinaryString(sujeito.state)}\n")
10 |
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/CareTaker.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class CareTaker{
4 |
5 | private val mementoList:MutableList = arrayListOf()
6 |
7 | fun add(state: MementoPattern) = mementoList.add(state)
8 | fun getIndex(index:Int): MementoPattern = mementoList[index]
9 |
10 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ChatRoom.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | import java.time.LocalDateTime
4 |
5 | class ChatRoom{
6 |
7 | fun mostrarMensagem(usuario: Usuario, message:String){
8 | val hoje = LocalDateTime.now().toString()
9 | println("$hoje [${usuario.nome}]: $message")
10 | }
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ClienteAbstrato.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | abstract class ClienteAbstrato{
4 |
5 | abstract fun isNulo():Boolean
6 | abstract fun getNome():String
7 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ClienteNulo.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class ClienteNulo: ClienteAbstrato(){
4 |
5 | override fun isNulo(): Boolean = true
6 | override fun getNome(): String = "Não existe esse nome na lista"
7 |
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ClienteReal.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class ClienteReal(private var nome:String): ClienteAbstrato(){
4 |
5 | override fun isNulo(): Boolean = false
6 | override fun getNome(): String = nome
7 |
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ComprarEstoque.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class ComprarEstoque(private val estoque: Estoque) : Pedido {
4 | override fun executar() = estoque.comprar()
5 |
6 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Computador.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Computador: PartesComputador {
4 |
5 | private val partes: Array = arrayOf(Mouse(), Teclado(), Monitor())
6 |
7 | override fun aceitar(partesComputadorVisitor: PartesComputadorVisitor) {
8 |
9 | partes.forEach { partesComputador -> partesComputador.aceitar(partesComputadorVisitor) }
10 | partesComputadorVisitor.visit(this)
11 | }
12 |
13 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ConsoleLogger.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class ConsoleLogger(override var level: Int) : AbstractLogger() {
4 |
5 | override fun write(message: String?) = println("Standard Console::Logger:$message")
6 |
7 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Container.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | interface Container {
4 | fun getIterator(): Iterator
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Context.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Context {
4 | var state: State? = null
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ContextStrategy.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 13:05
6 | */
7 | class ContextStrategy(private val strategy: OperationStrategy) {
8 |
9 | fun executeOperation(num1:Double, num2:Double):Double = strategy.doOperation(num1, num2)
10 |
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Corretor.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Corretor {
4 |
5 | private val listaPedidos: MutableList = ArrayList()
6 |
7 | fun levarPedido(pedido: Pedido) {
8 | listaPedidos.add(pedido)
9 | }
10 |
11 | fun colocarPedidos() {
12 |
13 | listaPedidos.forEach { pedido -> pedido.executar() }
14 | listaPedidos.clear()
15 |
16 | }
17 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Divisao.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 13:01
6 | */
7 | class Divisao: OperationStrategy {
8 | override fun doOperation(num1: Double, num2: Double): Double = num1.div(num2)
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ErrorLogger.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class ErrorLogger(override var level: Int) : AbstractLogger() {
4 |
5 | override fun write(message: String?) = println("Error Console::Logger:$message")
6 |
7 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Estoque.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Estoque {
4 |
5 | private val nome = "ABC"
6 | private val quantidade = 10
7 |
8 | fun comprar() = println("Estoque [Nome: $nome, Quantidade: $quantidade] comprado")
9 |
10 | fun vender() = println("Estoque [Nome: $nome, Quantidade: $quantidade] vendido")
11 |
12 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Expression.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | interface Expression{
4 | fun interpret(context:String):Boolean
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/FileLogger.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class FileLogger(override var level: Int) : AbstractLogger() {
4 |
5 | override fun write(message: String?) = println("File::Logger:$message")
6 |
7 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Football.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Football: Game(){
4 |
5 | override fun initialize() = println("Football Game Initialized! Start playing.")
6 | override fun startPlay() = println("Football Game Started. Enjoy the game!")
7 | override fun endPlay() = println("Football Game Finished!")
8 |
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Game.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | abstract class Game{
4 |
5 | abstract fun initialize()
6 | abstract fun startPlay()
7 | abstract fun endPlay()
8 |
9 | fun play(){
10 | initialize()
11 | startPlay()
12 | endPlay()
13 | }
14 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/HexaObserver.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | import java.util.*
4 |
5 | class HexaObserver(private val sujeito: Sujeito) : Observer() {
6 |
7 | init {
8 | sujeito.attach(this)
9 | }
10 |
11 | override fun atualizar() = println("Hexa String: ${Integer.toHexString(sujeito.state).uppercase(Locale.getDefault())}")
12 |
13 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/IniciarEstado.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class IniciarEstado : State {
4 | override fun doAction(context: Context) {
5 | println("O jogador iniciou o estado")
6 | context.state = this
7 | }
8 |
9 | override fun toString(): String = "Estado Iniciado"
10 |
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Iterator.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 19/06/2021 at 16:04
6 | */
7 | interface Iterator {
8 | fun hasNext(): Boolean
9 | fun next(): Any?
10 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/MementoPattern.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | data class MementoPattern(val state:String)
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Monitor.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Monitor: PartesComputador {
4 | override fun aceitar(partesComputadorVisitor: PartesComputadorVisitor) {
5 | partesComputadorVisitor.visit(this)
6 | }
7 |
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Mouse.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Mouse: PartesComputador {
4 | override fun aceitar(partesComputadorVisitor: PartesComputadorVisitor) {
5 | partesComputadorVisitor.visit(this)
6 | }
7 |
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Multiplicacao.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 13:00
6 | */
7 | class Multiplicacao: OperationStrategy {
8 | override fun doOperation(num1: Double, num2: Double): Double = num1.times(num2)
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/NameRepository.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class NameRepository : Container {
4 |
5 | val names = arrayOf("Roberto", "John", "Julia", "Larissa")
6 |
7 | override fun getIterator(): Iterator {
8 | return NameIterator()
9 | }
10 |
11 | inner class NameIterator : Iterator {
12 |
13 | private var index: Int = 0
14 |
15 | override fun hasNext(): Boolean {
16 | if (index < names.size) {
17 | return true
18 | }
19 | return false
20 | }
21 |
22 | override fun next(): Any? {
23 | if (hasNext()) {
24 | return names[index++]
25 | }
26 | return null
27 | }
28 |
29 | }
30 |
31 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Observer.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 18/06/2021 at 10:44
6 | */
7 | abstract class Observer {
8 | abstract fun atualizar()
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/OctalObserver.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class OctalObserver(private val sujeito: Sujeito) : Observer() {
4 |
5 | init {
6 | sujeito.attach(this)
7 | }
8 |
9 | override fun atualizar() = println("Octal String: ${Integer.toOctalString(sujeito.state)}")
10 |
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/OperationStrategy.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 12:57
6 | */
7 | interface OperationStrategy {
8 | fun doOperation(num1:Double, num2: Double):Double
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/OrExpression.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class OrExpression(private val firstExpression: Expression, private val secondExpression: Expression): Expression {
4 | override fun interpret(context: String): Boolean = firstExpression.interpret(context) || secondExpression.interpret(context)
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Originator.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Originator{
4 |
5 | lateinit var state:String
6 |
7 | fun saveStateToMemento(): MementoPattern = MementoPattern(state)
8 | fun getStateFromMemento(memento: MementoPattern){
9 | state = memento.state
10 | }
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/PararEstado.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class PararEstado : State {
4 | override fun doAction(context: Context) {
5 | println("O jogador parou o estado")
6 | context.state = this
7 | }
8 |
9 | override fun toString(): String = "Estado Parado"
10 |
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/ParteComputadorDisplayVisitor.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class ParteComputadorDisplayVisitor: PartesComputadorVisitor {
4 |
5 | override fun visit(computador: Computador) = println("Displaying Computador.")
6 | override fun visit(monitor: Monitor) = println("Displaying Monitor.")
7 | override fun visit(teclado: Teclado) = println("Displaying Teclado.")
8 | override fun visit(mouse: Mouse) = println("Displaying Mouse.")
9 |
10 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/PartesComputador.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | interface PartesComputador{
4 | fun aceitar(partesComputadorVisitor: PartesComputadorVisitor)
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/PartesComputadorVisitor.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | interface PartesComputadorVisitor{
4 | fun visit(computador: Computador)
5 | fun visit(monitor: Monitor)
6 | fun visit(teclado: Teclado)
7 | fun visit(mouse: Mouse)
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Pedido.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | interface Pedido {
4 | fun executar()
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Soma.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 12:59
6 | */
7 | class Soma: OperationStrategy {
8 | override fun doOperation(num1: Double, num2: Double): Double = num1.plus(num2)
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/State.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 18/06/2021 at 09:42
6 | */
7 | interface State {
8 | fun doAction(context: Context)
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Subtracao.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 13:00
6 | */
7 | class Subtracao: OperationStrategy {
8 | override fun doOperation(num1: Double, num2: Double): Double = num1.minus(num2)
9 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Sujeito.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Sujeito {
4 | private val observers: MutableList = ArrayList()
5 | var state = 0
6 | set(state) {
7 | field = state
8 | notifyAllObservers()
9 | }
10 |
11 | fun attach(observer: Observer) = observers.add(observer)
12 | private fun notifyAllObservers() = observers.forEach { observer -> observer.atualizar() }
13 |
14 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Teclado.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Teclado: PartesComputador {
4 | override fun aceitar(partesComputadorVisitor: PartesComputadorVisitor) {
5 | partesComputadorVisitor.visit(this)
6 | }
7 |
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/TerminalExpression.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class TerminalExpression(private val data:String): Expression {
4 | override fun interpret(context: String): Boolean {
5 | if (context.contains(data)) {
6 | return true
7 | }
8 | return false
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Usuario.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Usuario(val nome:String){
4 |
5 | fun enviarMensagem(message: String){
6 | ChatRoom().mostrarMensagem(this, message)
7 | }
8 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/VenderEstoque.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class VenderEstoque(private val estoque: Estoque) : Pedido {
4 | override fun executar() = estoque.vender()
5 | }
--------------------------------------------------------------------------------
/src/comportamental/exemplos/Volei.kt:
--------------------------------------------------------------------------------
1 | package comportamental.exemplos
2 |
3 | class Volei: Game(){
4 |
5 | override fun initialize() = println("Volei Game Initialized! Start playing.")
6 | override fun startPlay() = println("Volei Game Started. Enjoy the game!")
7 | override fun endPlay() = println("Volei Game Finished!")
8 |
9 |
10 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/AbstractFactory.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns
2 |
3 | import criacao.design_patterns.abstract_factory.Producer
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 17/06/2021 at 17:58
8 | */
9 | fun main() {
10 |
11 | val shapeFactory1 = Producer().getFactory(false)
12 |
13 | val shape1 = shapeFactory1.getShape("RECTANGLE")
14 | shape1?.draw()
15 |
16 | val shape2 = shapeFactory1.getShape("SQUARE")
17 | shape2?.draw()
18 |
19 |
20 | val shapeFactory2 = Producer().getFactory(true)
21 |
22 | val shape3 = shapeFactory2.getShape("RECTANGLE")
23 | shape3?.draw()
24 |
25 | val shape4 = shapeFactory2.getShape("SQUARE")
26 | shape4?.draw()
27 |
28 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/Builder.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns
2 |
3 | import criacao.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:32
8 | */
9 | fun main() {
10 |
11 | val refeicaoBuilder = RefeicaoBuilder()
12 |
13 | val refeicaoVegetariana = refeicaoBuilder.prepararRefeicaoVegetariana()
14 | println("Refeição Vegetariana")
15 | refeicaoVegetariana.mostrarItens()
16 | println("Custo total: ${refeicaoVegetariana.getCusto()}\n")
17 |
18 | val refeicaoNaoVegetariana = refeicaoBuilder.prepararRefeicaoNaoVegetariana()
19 | println("Refeição Não Vegetariana")
20 | refeicaoNaoVegetariana.mostrarItens()
21 | println("Custo total: ${refeicaoNaoVegetariana.getCusto()}")
22 |
23 | //Saída
24 | //Refeição Vegetariana
25 | //Item: Hamburguer Vegetariano, Embalagem: Embrulho, Preço: 25.0
26 | //Item: Coca Cola, Embalagem: Garrafa, Preço: 30.0
27 | //Custo total: 55.0
28 |
29 | //Refeição Não Vegetariana
30 | //Item: Hamburguer de Frango, Embalagem: Embrulho, Preço: 50.5
31 | //Item: Pepsi, Embalagem: Garrafa, Preço: 35.0
32 | //Custo total: 85.5
33 |
34 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/Factory.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns
2 |
3 | import criacao.design_patterns.factory.ShapeFactory
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:32
8 | */
9 | fun main() {
10 |
11 | val shapeFactory = ShapeFactory()
12 |
13 | val shape1 = shapeFactory.getShape("CIRCLE")
14 | shape1?.draw()
15 |
16 | val shape2 = shapeFactory.getShape("RECTANGLE")
17 | shape2?.draw()
18 |
19 | val shape3 = shapeFactory.getShape("SQUARE")
20 | shape3?.draw()
21 |
22 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/FactoryMethod.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns
2 |
3 | import criacao.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:33
8 | */
9 | class FactoryMethod{
10 |
11 | fun createNotification(channel:String): Notification? {
12 |
13 | if (channel.isEmpty()){
14 | return null
15 | }
16 | when (channel) {
17 | "SMS" -> {
18 | return SmsNotification()
19 | }
20 | "EMAIL" -> {
21 | return EmailNotification()
22 | }
23 | "PUSH" -> {
24 | return PushNotification()
25 | }
26 | }
27 |
28 | return null
29 |
30 | }
31 | }
32 | fun main() {
33 |
34 | val factoryMethod = FactoryMethod()
35 |
36 | val notification = factoryMethod.createNotification("SMS")
37 | notification?.notifyUser()
38 |
39 | //Saída
40 | //Sending an SMS notification
41 |
42 | /*
43 | val notification = factoryMethod.createNotification("EMAIL")
44 | notification?.notifyUser()
45 |
46 | //Saída
47 | //Sending an e-mail notification
48 |
49 | val notification = factoryMethod.createNotification("PUSH")
50 | notification?.notifyUser()
51 |
52 | //Saída
53 | //Sending a push notification
54 | */
55 |
56 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/Prototype.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns
2 |
3 | import criacao.exemplos.ColorStore
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:33
8 | */
9 | fun main() {
10 |
11 | ColorStore().getColor("blue").addColor()
12 | ColorStore().getColor("black").addColor()
13 | ColorStore().getColor("black").addColor()
14 | ColorStore().getColor("blue").addColor()
15 |
16 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/Singleton.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 15/06/2021 at 16:33
6 | */
7 | object Singleton {
8 |
9 | init {
10 | println("Initializing with object: $this")
11 | }
12 |
13 | fun print() = println("Printing with object: $this")
14 |
15 | }
16 |
17 |
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/AbstractFactoryPattern.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 18:01
6 | */
7 | abstract class AbstractFactoryPattern {
8 | abstract fun getShape(shapeType:String): Shape?
9 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/Producer.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 18:09
6 | */
7 | class Producer {
8 | fun getFactory(rounded:Boolean): AbstractFactoryPattern {
9 | return if (rounded){
10 | RoundedShapeFactory()
11 | } else{
12 | ShapeFactory()
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/Rectangle.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | class Rectangle: Shape {
4 | override fun draw() = println("Inside Rectangle::draw() method.")
5 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/RoundedRectangle.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 17:41
6 | */
7 | class RoundedRectangle: Shape {
8 | override fun draw() {
9 | println("Inside RoundedRectangle::draw() method.")
10 | }
11 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/RoundedShapeFactory.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 18:07
6 | */
7 | class RoundedShapeFactory: AbstractFactoryPattern() {
8 |
9 | override fun getShape(shapeType: String): Shape? {
10 | when (shapeType) {
11 | "RECTANGLE" -> {
12 | return RoundedRectangle()
13 | }
14 | "SQUARE" -> {
15 | return RoundedSquare()
16 | }
17 | }
18 | return null
19 | }
20 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/RoundedSquare.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 17/06/2021 at 17:43
6 | */
7 | class RoundedSquare: Shape {
8 | override fun draw() {
9 | println("Inside RoundedSquare::draw() method.")
10 | }
11 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/Shape.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | interface Shape{
4 | fun draw()
5 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/ShapeFactory.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | import criacao.design_patterns.factory.Circle
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 20/06/2021 at 13:10
8 | */
9 | class ShapeFactory:AbstractFactoryPattern() {
10 | override fun getShape(shapeType: String): Shape? {
11 | when (shapeType) {
12 | "RECTANGLE" -> {
13 | return Rectangle()
14 | }
15 | "SQUARE" -> {
16 | return Square()
17 | }
18 | "CIRCLE" -> {
19 | return Circle()
20 | }
21 | }
22 | return null
23 | }
24 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/abstract_factory/Square.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.abstract_factory
2 |
3 | class Square: Shape {
4 | override fun draw() = println("Inside Square::draw() method.")
5 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/factory/Circle.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.factory
2 |
3 | import criacao.design_patterns.abstract_factory.Shape
4 |
5 | class Circle: Shape {
6 | override fun draw() = println("Inside Circle::draw() method.")
7 | }
--------------------------------------------------------------------------------
/src/criacao/design_patterns/factory/ShapeFactory.kt:
--------------------------------------------------------------------------------
1 | package criacao.design_patterns.factory
2 |
3 | import criacao.design_patterns.abstract_factory.Rectangle
4 | import criacao.design_patterns.abstract_factory.Shape
5 | import criacao.design_patterns.abstract_factory.Square
6 |
7 | class ShapeFactory{
8 | fun getShape(shapeType:String): Shape? {
9 | when {
10 | shapeType.equals("CIRCLE", true) -> {
11 | return Circle()
12 | }
13 | shapeType.equals("RECTANGLE", true) -> {
14 | return Rectangle()
15 | }
16 | shapeType.equals("SQUARE", true) -> {
17 | return Square()
18 | }
19 | else -> shapeType.let {
20 | return null
21 | }
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/BebidaGelada.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | abstract class BebidaGelada: Item {
4 | override fun embalagem(): Embalagem = Garrafa()
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/BlackColor.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class BlackColor: Color(){
4 | override fun addColor() = println("Black color added")
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/BlueColor.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class BlueColor: Color(){
4 | override fun addColor() = println("Blue color added")
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Cola.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class Cola: BebidaGelada(){
4 | override fun nome(): String = "Coca Cola"
5 | override fun preco(): Float = 30.0f
6 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Color.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | abstract class Color : Cloneable{
4 |
5 | abstract fun addColor()
6 |
7 | override fun clone(): Any {
8 | var clone: Any? = null
9 | try {
10 | clone = super.clone()
11 | } catch (e: CloneNotSupportedException) {
12 | e.printStackTrace()
13 | }
14 | return clone!!
15 | }
16 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/ColorStore.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class ColorStore {
4 |
5 | private val colorMap: MutableMap = HashMap()
6 |
7 | fun getColor(colorName: String): Color = colorMap[colorName]!!.clone() as Color
8 |
9 | init {
10 | colorMap["blue"] = BlueColor()
11 | colorMap["black"] = BlackColor()
12 | }
13 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/EmailNotification.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class EmailNotification: Notification {
4 | override fun notifyUser() = println("Sending an e-mail notification")
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Embalagem.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | interface Embalagem{
4 | fun pacote():String
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Embrulho.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class Embrulho: Embalagem {
4 | override fun pacote(): String = "Embrulho"
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Garrafa.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class Garrafa: Embalagem {
4 | override fun pacote() = "Garrafa"
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Hamburguer.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | abstract class Hamburguer: Item {
4 | override fun embalagem(): Embalagem = Embrulho()
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/HamburguerFrango.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class HamburguerFrango: Hamburguer(){
4 | override fun nome(): String = "Hamburguer de Frango"
5 | override fun preco(): Float = 50.5f
6 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/HamburguerVegetariano.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class HamburguerVegetariano: Hamburguer(){
4 | override fun nome(): String = "Hamburguer Vegetariano"
5 | override fun preco(): Float = 25.0f
6 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Item.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | interface Item{
4 | fun nome():String
5 | fun embalagem(): Embalagem
6 | fun preco():Float
7 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Notification.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | interface Notification{
4 | fun notifyUser()
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Pepsi.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class Pepsi: BebidaGelada(){
4 | override fun nome(): String = "Pepsi"
5 | override fun preco(): Float = 35.0f
6 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/PushNotification.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class PushNotification: Notification {
4 | override fun notifyUser() = println("Sending a push notification")
5 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Refeicao.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class Refeicao{
4 |
5 | private val items = mutableListOf- ()
6 |
7 | fun addItem(item: Item){
8 | items.add(item)
9 | }
10 | fun getCusto():Float{
11 |
12 | var custo = 0.0f
13 |
14 | items.forEach { item->
15 | custo += item.preco()
16 | }
17 | return custo
18 | }
19 | fun mostrarItens(){
20 | for (item in items){
21 | println("Item: ${item.nome()}, Embalagem: ${item.embalagem().pacote()}, Preço: ${item.preco()}")
22 | }
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/RefeicaoBuilder.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class RefeicaoBuilder{
4 |
5 | fun prepararRefeicaoVegetariana(): Refeicao {
6 |
7 | val refeicao = Refeicao()
8 | refeicao.addItem(HamburguerVegetariano())
9 | refeicao.addItem(Cola())
10 |
11 | return refeicao
12 | }
13 |
14 | fun prepararRefeicaoNaoVegetariana(): Refeicao {
15 |
16 | val refeicao = Refeicao()
17 | refeicao.addItem(HamburguerFrango())
18 | refeicao.addItem(Pepsi())
19 |
20 | return refeicao
21 | }
22 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/Singleton.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | import criacao.design_patterns.Singleton
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 20/06/2021 at 09:40
8 | */
9 | fun main() {
10 | println("Start")
11 | Singleton.print()
12 | }
--------------------------------------------------------------------------------
/src/criacao/exemplos/SmsNotification.kt:
--------------------------------------------------------------------------------
1 | package criacao.exemplos
2 |
3 | class SmsNotification: Notification {
4 | override fun notifyUser() = println("Sending an SMS notification")
5 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Adapter.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | /**
4 | * @author RubioAlves
5 | * Created 15/06/2021 at 16:34
6 | */
7 | class Adapter {
8 |
9 | interface Pato {
10 | fun grasnar()
11 | fun voar()
12 | }
13 |
14 | class PatoMarreco : Pato {
15 | override fun grasnar() = println("Quack, quack, quack")
16 | override fun voar() = println("Voar, voar, voar")
17 | }
18 |
19 | interface Peru {
20 | fun soar()
21 | fun voar()
22 | }
23 |
24 | class PeruAustraliano : Peru {
25 | override fun soar() = println("Blulu, brulu, brulu")
26 | override fun voar() = println("Voar")
27 | }
28 |
29 | class PeruAdapter(private val peru: Peru) : Pato {
30 |
31 | override fun grasnar() = peru.soar()
32 | override fun voar() = peru.voar()
33 |
34 | }
35 |
36 | }
37 |
38 | fun main() {
39 |
40 | val patoMarreco = Adapter.PatoMarreco()
41 | val peru = Adapter.PeruAustraliano()
42 |
43 | val peruAdapter = Adapter.PeruAdapter(peru)
44 |
45 | val patos = arrayOf(patoMarreco, peruAdapter)
46 |
47 | patos.forEach { pato->
48 | pato.grasnar()
49 | pato.voar()
50 | }
51 |
52 | //Saida
53 |
54 | //Quack, quack, quack
55 | //Voar, voar, voar
56 | //Blulu, brulu, brulu
57 | //Voar
58 |
59 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Bridge.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | import estrutural.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:34
8 | */
9 | fun main() {
10 |
11 | val circuloVermelho = Circulo(100, 100, 10, CirculoVermelho())
12 | val circuloVerde = Circulo(100, 100, 10, CirculoVerde())
13 |
14 | circuloVermelho.desenhar()
15 | circuloVerde.desenhar()
16 |
17 | //Saída
18 | //Desenhando Circulo [cor:vermelho, raio: 10, x: 100, y: 100]
19 | //Desenhando Circulo [cor:verde, raio: 10, x: 100, y: 100]
20 |
21 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Composite.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | import estrutural.exemplos.Empregado
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:34
8 | */
9 | fun main() {
10 |
11 | val ceo = Empregado("João", "CEO", 30000)
12 | val chefeVendas = Empregado("Roberto", "Chefe de Vendas", 20000)
13 | val chefeMarkerting = Empregado("Michel", "Chefe de Markerting", 20000)
14 |
15 | val escriturario1 = Empregado("Laura", "Marketing", 10000)
16 | val escriturario2 = Empregado("Bob", "Marketing", 10000)
17 |
18 | val executivoVendas1 = Empregado("Richard", "Vendas", 10000)
19 | val executivoVendas2 = Empregado("Lucas", "Vendas", 10000)
20 |
21 | ceo.adicionar(chefeVendas)
22 | ceo.adicionar(chefeMarkerting)
23 |
24 | chefeVendas.adicionar(executivoVendas1)
25 | chefeVendas.adicionar(executivoVendas2)
26 |
27 | chefeMarkerting.adicionar(escriturario1)
28 | chefeMarkerting.adicionar(escriturario2)
29 |
30 | //Lista com todos os empregados da empresa
31 | println(ceo)
32 | ceo.getSubordinados().forEach { chefeEmpregados->
33 |
34 | println(chefeEmpregados)
35 |
36 | chefeEmpregados.getSubordinados().forEach { empregado -> println(empregado)}
37 |
38 | }
39 |
40 | //Saída
41 |
42 | //Empregado:[Nome:João, departamento:CEO, salario:30000]
43 | //Empregado:[Nome:Roberto, departamento:Chefe de Vendas, salario:20000]
44 | //Empregado:[Nome:Richard, departamento:Vendas, salario:10000]
45 | //Empregado:[Nome:Lucas, departamento:Vendas, salario:10000]
46 | //Empregado:[Nome:Michel, departamento:Chefe de Markerting, salario:20000]
47 | //Empregado:[Nome:Laura, departamento:Marketing, salario:10000]
48 | //Empregado:[Nome:Bob, departamento:Marketing, salario:10000]
49 |
50 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Decorator.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | import estrutural.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:35
8 | */
9 | fun main() {
10 |
11 | val circulo = CirculoDecorator()
12 | val circuloVermelho = FormaVermelhaDecorator(CirculoDecorator())
13 | val retanguloVermelho = FormaVermelhaDecorator(Retangulo())
14 | println("Circulo com a borda normal")
15 | circulo.desenhar()
16 |
17 | println("\nCirculo com a borda Vermelha")
18 | circuloVermelho.desenhar()
19 |
20 | println("\nRetângulo com a borda Vermelha")
21 | retanguloVermelho.desenhar()
22 |
23 | //Saída
24 |
25 | //Circulo com a borda normal
26 | //Forma: Circulo
27 |
28 | //Circulo com a borda Vermelha
29 | //Forma: Circulo
30 | //Cor da Borda: Vermelha
31 |
32 | //Retângulo com a borda Vermelha
33 | //Forma: Retângulo
34 | //Cor da Borda: Vermelha
35 |
36 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Facade.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | import estrutural.exemplos.*
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:35
8 | */
9 | fun main() {
10 |
11 | val criadorForma = CriadorForma()
12 | criadorForma.desenharCircle()
13 | criadorForma.desenharRectangle()
14 | criadorForma.desenharSquare()
15 |
16 | //Saída
17 |
18 | //Circle::desenhar()
19 | //Rectangle::desenhar()
20 | //Square::desenhar()
21 |
22 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Flyweight.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | import estrutural.exemplos.CircleFlyweight
4 | import estrutural.exemplos.ShapeFactory
5 |
6 |
7 | /**
8 | * @author RubioAlves
9 | * Created 15/06/2021 at 16:35
10 | */
11 | class Flyweight {
12 |
13 | private val colors = arrayOf("Red", "Green", "Blue", "White", "Black")
14 |
15 | fun getRandomColor():String = colors[(Math.random() * colors.size).toInt()]
16 | fun getRandomX():Int = (Math.random() * 100).toInt()
17 | fun getRandomY():Int = (Math.random() * 100).toInt()
18 |
19 | }
20 |
21 | fun main() {
22 |
23 | for (i in 0..19){
24 | val circle = ShapeFactory().getCircle(Flyweight().getRandomColor()) as CircleFlyweight
25 | circle.x = Flyweight().getRandomX()
26 | circle.y = Flyweight().getRandomY()
27 | circle.radius = 100
28 | circle.desenhar()
29 | }
30 |
31 | }
--------------------------------------------------------------------------------
/src/estrutural/design_patterns/Proxy.kt:
--------------------------------------------------------------------------------
1 | package estrutural.design_patterns
2 |
3 | import estrutural.exemplos.ProxyImage
4 |
5 | /**
6 | * @author RubioAlves
7 | * Created 15/06/2021 at 16:35
8 | */
9 | fun main() {
10 |
11 | val image = ProxyImage("MinhaFoto.png")
12 |
13 | //Imagem será lida pelo disco
14 | image.display()
15 | //Imagem não será lida pelo disco
16 | image.display()
17 |
18 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Circle.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | import criacao.design_patterns.abstract_factory.Shape
4 |
5 | class Circle: Shape {
6 | override fun draw() = println("Circle::desenhar()")
7 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/CircleFlyweight.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class CircleFlyweight(private val color:String): Shape {
4 |
5 | var x:Int = 0
6 | var y:Int = 0
7 | var radius:Int = 0
8 |
9 | override fun desenhar() {
10 | println("CircleFlyweight: Draw() [Color:$color, x:$x, y:$y, radius:$radius]")
11 | }
12 |
13 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Circulo.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class Circulo(private val x: Int, private val y: Int, private val raio: Int, desenhoAPI: DesenhoAPI) : Forma(desenhoAPI) {
4 | override fun desenhar() = desenhoApi.desenharCirculo(raio, x, y)
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/CirculoDecorator.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class CirculoDecorator : Shape {
4 | override fun desenhar() = println("Forma: Circulo")
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/CirculoVerde.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class CirculoVerde : DesenhoAPI {
4 | override fun desenharCirculo(raio: Int, x: Int, y: Int) = println("Desenhando Circulo [cor:verde, raio: $raio, x: $x, y: $y]")
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/CirculoVermelho.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class CirculoVermelho : DesenhoAPI {
4 | override fun desenharCirculo(raio: Int, x: Int, y: Int) = println("Desenhando Circulo [cor:vermelho, raio: $raio, x: $x, y: $y]")
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/CriadorForma.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | import criacao.design_patterns.abstract_factory.Shape
4 |
5 | class CriadorForma: Formas {
6 |
7 | private val circle: Shape = Circle()
8 | private val rectangle: Shape = Rectangle()
9 | private val square: Shape = Square()
10 |
11 | override fun desenharCircle() = circle.draw()
12 | override fun desenharRectangle() = rectangle.draw()
13 | override fun desenharSquare() = square.draw()
14 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/DesenhoAPI.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | interface DesenhoAPI {
4 | fun desenharCirculo(raio: Int, x: Int, y: Int)
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Empregado.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class Empregado(private val nome: String, private val departamento: String, private val salario: Int) {
4 |
5 | private val subordinados: MutableList = ArrayList()
6 |
7 | fun adicionar(e: Empregado) = subordinados.add(e)
8 | fun getSubordinados(): List = subordinados
9 |
10 | override fun toString(): String = "Empregado:[Nome:$nome, departamento:$departamento, salario:$salario]"
11 |
12 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Forma.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | abstract class Forma(protected val desenhoApi: DesenhoAPI) {
4 | abstract fun desenhar()
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/FormaDecorator.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | abstract class FormaDecorator(private val decoratedForma: Shape) : Shape {
4 | override fun desenhar() = decoratedForma.desenhar()
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/FormaVermelhaDecorator.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class FormaVermelhaDecorator(private val decoratedForma: Shape) : FormaDecorator(decoratedForma) {
4 | override fun desenhar() {
5 | decoratedForma.desenhar()
6 | setBordaVermelha()
7 | }
8 |
9 | private fun setBordaVermelha() = println("Cor da Borda: Vermelha")
10 |
11 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Formas.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | interface Formas{
4 | fun desenharCircle()
5 | fun desenharRectangle()
6 | fun desenharSquare()
7 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Image.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | interface Image {
4 | fun display()
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/ProxyImage.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class ProxyImage(private val fileName: String) : Image {
4 |
5 | private var realImage: RealImage? = null
6 | override fun display() {
7 |
8 | if (realImage == null) {
9 | realImage = RealImage(fileName)
10 | }
11 | realImage!!.display()
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/RealImage.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class RealImage(private val fileName: String) : Image {
4 |
5 | init {
6 | loadFromDisk(fileName)
7 | }
8 |
9 | override fun display() = println("Displaying: $fileName\n")
10 |
11 | private fun loadFromDisk(fileName: String) = println("Loading $fileName")
12 |
13 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Rectangle.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | import criacao.design_patterns.abstract_factory.Shape
4 |
5 | class Rectangle: Shape {
6 | override fun draw() = println("Rectangle::desenhar()")
7 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Retangulo.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class Retangulo : Shape {
4 | override fun desenhar() = println("Forma: Retângulo")
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Shape.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | interface Shape {
4 | fun desenhar()
5 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/ShapeFactory.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | class ShapeFactory{
4 | private val circleMap: HashMap<*, *> = HashMap()
5 |
6 | fun getCircle(color: String): Shape {
7 | var circle = circleMap[color] as CircleFlyweight?
8 |
9 | if (circle == null){
10 | circle = CircleFlyweight(color)
11 | println("Criando a cor do circulo: $color")
12 | }
13 | return circle
14 | }
15 | }
--------------------------------------------------------------------------------
/src/estrutural/exemplos/Square.kt:
--------------------------------------------------------------------------------
1 | package estrutural.exemplos
2 |
3 | import criacao.design_patterns.abstract_factory.Shape
4 |
5 | class Square: Shape {
6 | override fun draw() = println("Square::desenhar()")
7 | }
--------------------------------------------------------------------------------
/src/imagens/abstract-factory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/abstract-factory.png
--------------------------------------------------------------------------------
/src/imagens/adapter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/adapter.png
--------------------------------------------------------------------------------
/src/imagens/bridge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/bridge.png
--------------------------------------------------------------------------------
/src/imagens/builder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/builder.png
--------------------------------------------------------------------------------
/src/imagens/chain-of-responsibility.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/chain-of-responsibility.png
--------------------------------------------------------------------------------
/src/imagens/command.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/command.png
--------------------------------------------------------------------------------
/src/imagens/composite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/composite.png
--------------------------------------------------------------------------------
/src/imagens/decorator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/decorator.png
--------------------------------------------------------------------------------
/src/imagens/facade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/facade.png
--------------------------------------------------------------------------------
/src/imagens/factory-method.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/factory-method.png
--------------------------------------------------------------------------------
/src/imagens/factory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/factory.png
--------------------------------------------------------------------------------
/src/imagens/flyweight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/flyweight.png
--------------------------------------------------------------------------------
/src/imagens/iterator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/iterator.png
--------------------------------------------------------------------------------
/src/imagens/mediator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/mediator.png
--------------------------------------------------------------------------------
/src/imagens/memento.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/memento.png
--------------------------------------------------------------------------------
/src/imagens/observer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/observer.png
--------------------------------------------------------------------------------
/src/imagens/prototype.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/prototype.png
--------------------------------------------------------------------------------
/src/imagens/proxy&decorator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/proxy&decorator.png
--------------------------------------------------------------------------------
/src/imagens/proxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/proxy.png
--------------------------------------------------------------------------------
/src/imagens/singleton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/singleton.png
--------------------------------------------------------------------------------
/src/imagens/state.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/state.png
--------------------------------------------------------------------------------
/src/imagens/strategy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/strategy.png
--------------------------------------------------------------------------------
/src/imagens/template-method.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/template-method.png
--------------------------------------------------------------------------------
/src/imagens/visitor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/imagens/visitor.png
--------------------------------------------------------------------------------
/src/uml/NullObject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/uml/NullObject.png
--------------------------------------------------------------------------------
/src/uml/Strategy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marceloalves95/DesignPattern-Kotlin/5f00facfdc3223933b0503ce7b2f0a6477339d7b/src/uml/Strategy.png
--------------------------------------------------------------------------------