├── .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 --------------------------------------------------------------------------------