├── .idea
├── .gitignore
├── .name
├── compiler.xml
├── encodings.xml
├── jarRepositories.xml
├── libraries
│ ├── Maven__junit_junit_4_11.xml
│ └── Maven__org_hamcrest_hamcrest_core_1_3.xml
├── misc.xml
├── modules.xml
├── sonarlint
│ └── issuestore
│ │ ├── 0
│ │ ├── 2
│ │ │ └── 0296c4037f9db500e6131d0f31dc3b87bb47477a
│ │ ├── 8
│ │ │ └── 08f3a13dadec1c44dc5e26e866dacd77d33a6725
│ │ ├── a
│ │ │ ├── 0a85a07e32f15af0b626935c98fa4b2a23b783a6
│ │ │ └── 0ad7abcf9376d082ec919388812e623c329d4787
│ │ └── e
│ │ │ └── 0e0022a3d1f658366a1480f4a1ce3e0f8a9367ee
│ │ ├── 1
│ │ ├── 0
│ │ │ └── 10d82019e45c50f55095ef211c8152878d49ea6d
│ │ ├── 2
│ │ │ └── 123febe613ee03b60825dc14bd5b9310393622b4
│ │ ├── 9
│ │ │ └── 1900ab0ecc223aa0ba538a6f9c144e551f92d74a
│ │ ├── b
│ │ │ └── 1b12dff50d5ab769e4ff347a37ec84bc276b86be
│ │ └── e
│ │ │ └── 1e4fae9c4fb9b40457eee5c46d90f6f72fcc9564
│ │ ├── 2
│ │ ├── 1
│ │ │ └── 21837a557f61ac80c55270341caa69b3a154b703
│ │ ├── 4
│ │ │ └── 244c4458b375b7cfd1dadf49cd52cc9af70ebd22
│ │ ├── d
│ │ │ └── 2d579fc4728a4655a59d39ef38848af7ef4a3a06
│ │ └── e
│ │ │ └── 2ef398257899d47abfef8ab47673263560b5aa21
│ │ ├── 3
│ │ ├── 2
│ │ │ ├── 3244253a34f9ccb09a521b96a0c4c713335c7104
│ │ │ └── 32db7782c7f26851589a65de50e48da76abbd218
│ │ ├── 4
│ │ │ └── 34fd7042cde88952fded0e3bd9f921d4a1823f47
│ │ ├── c
│ │ │ └── 3c5bcbcfbf92da4fcd6d661362ca8f4d876cf02d
│ │ └── d
│ │ │ └── 3dbb2cfb8b5a17cb2fd76dec3bb24c3848fd81d4
│ │ ├── 4
│ │ ├── 2
│ │ │ └── 42989b39236403e32600ebd089136bfd2d350a53
│ │ ├── 3
│ │ │ └── 4371572063ea4b08161caa4c2d0a842684ce1a3f
│ │ ├── 6
│ │ │ └── 466dd7f3a99bafcc07253713d3ac495d0da916c9
│ │ ├── a
│ │ │ └── 4a668bd8bf7f212a192a9350195cf59a20fc7cbe
│ │ ├── e
│ │ │ └── 4e542b541a54df10e73b629a52bde3f2ea67850b
│ │ └── f
│ │ │ ├── 4fc0c39c0fde617d50632c222a5d74f4e8fda7f3
│ │ │ └── 4fcc37483f79a0a00b1e6596dae3cca9c8a51ebb
│ │ ├── 5
│ │ ├── 3
│ │ │ └── 534f8369b88cab068b62a53e6eb7005970802b0e
│ │ ├── 8
│ │ │ └── 58dc71713b0817497ddf392dbf1f85f59aaeab8a
│ │ ├── 9
│ │ │ └── 59b14fd965aec88ce215a18405f32c3fc1bfc0bf
│ │ └── a
│ │ │ └── 5a8114c3dc390a0513a7308266665fd862c76a39
│ │ ├── 6
│ │ ├── 1
│ │ │ └── 611612687f0ab0a0082a53c3b23c5cf1534be036
│ │ ├── 3
│ │ │ └── 631ba01c168076e5a74ac94d00ad59b9214a1961
│ │ ├── 8
│ │ │ └── 685268a27249c63cc37ea3a0f131843c75fe1891
│ │ ├── 9
│ │ │ └── 69d65151f033ad21651d419eadded16b69be95ac
│ │ └── b
│ │ │ └── 6b0c2387458172826b09ad64e2741b5bcb3ce89f
│ │ ├── 7
│ │ ├── 1
│ │ │ ├── 715bb7724c0094bdff810940c8704fd329ebf331
│ │ │ └── 71891a05f8df5962ac6dc50bfd847f52742f806a
│ │ ├── 2
│ │ │ └── 723d4cc5da95930ccdd3ec27556604dc1385bf5a
│ │ ├── 3
│ │ │ └── 7399021ddf9b31c7b12f792343bb858db0c418c8
│ │ ├── 8
│ │ │ ├── 784be3051751e18aba8bacbd03058a6467135208
│ │ │ └── 78d5143888758d9af8526c2d2799ecef108f55da
│ │ ├── c
│ │ │ ├── 7c685dd5bae94dab4d70d79205949f344b728afb
│ │ │ └── 7cacfd2f45f337a0f5c6b80cfac150b19de88bd3
│ │ ├── d
│ │ │ └── 7df4d24f92d603152e384aebb25003b1545d405a
│ │ └── f
│ │ │ ├── 7f03dba518d82fb3d81e15259a7fcb45537bdb54
│ │ │ └── 7fa3599d83b7a419ed1f5678fe6d9b019846de38
│ │ ├── 8
│ │ ├── 0
│ │ │ └── 80a889ef521d1151ed1ce8294506a5f9642050cb
│ │ ├── 6
│ │ │ └── 867ae4631ff8aea214de28d450aa7af5e849529a
│ │ ├── a
│ │ │ └── 8ac44397c663e11244ca2397c5c43c2c564dc871
│ │ └── d
│ │ │ └── 8d4f36dc2ffff1cd03b0f06841ac06497932df8b
│ │ ├── 9
│ │ ├── 1
│ │ │ └── 91550ea04c768ea6d1b3715490f07005f59bb451
│ │ ├── 2
│ │ │ └── 9248a1b7c9eb4dbc9eaa026a7ee97428ab673a45
│ │ ├── 3
│ │ │ └── 934477083639540a81992df211ef963811613525
│ │ ├── 5
│ │ │ └── 950a7d69531342a33206832997d86f976f38d091
│ │ ├── 7
│ │ │ └── 97855688deb6d3aae03a1e50ef9b9a49dd31e360
│ │ ├── 9
│ │ │ ├── 9909dddae976cd900f4d28b2a6d274021694018f
│ │ │ └── 993d8d45648b8e5036586b85c313cf589cf78f90
│ │ └── e
│ │ │ └── 9eeafdbf672eefdbbb294533fa1e497fd36a84ad
│ │ ├── a
│ │ ├── 2
│ │ │ └── a24d7a5aba8fc11acf6f154cc5bcb69c2b0cf1b7
│ │ ├── 3
│ │ │ └── a328b8eb90a8a414243f7fc9bcb34a371856f982
│ │ ├── 6
│ │ │ └── a673cb2776ac92671796e996f10df0675d4cbb2e
│ │ ├── 9
│ │ │ └── a9029b55083d2cd7487fa78a838a4f7261e4d4bc
│ │ ├── d
│ │ │ └── ad17f14270bdefe7f5e14e8a305e0abaf5529c2e
│ │ └── e
│ │ │ └── ae451f0ca01db262a1c494cc3c37f70a5a116b89
│ │ ├── b
│ │ ├── 3
│ │ │ └── b3d59206cfa973d76abdac3e18369846a455bc5a
│ │ ├── 6
│ │ │ └── b62e7a3f4bca69702b7c3064b23bcc120e082145
│ │ ├── 9
│ │ │ └── b95f48f43e1edcf8bfa19655cc97a76886e5b1d2
│ │ ├── d
│ │ │ ├── bdcb6a9cd01066a763da35baa52e78266f328e83
│ │ │ └── bddcb71f9cc73c9fafe84f032e4cf81247a2e486
│ │ ├── e
│ │ │ └── beb0aed7c6f55ea4f5df22cbea9e62ab943070c8
│ │ └── f
│ │ │ ├── bfae9a4ecb5dfb174ed42ea397409c5d588a4367
│ │ │ └── bfff929ad4319650185ad47badb15f49b9818fe0
│ │ ├── c
│ │ ├── 2
│ │ │ └── c263216d5ddc7c10f219c26f5a69b65fb111490a
│ │ ├── 3
│ │ │ └── c38b4bdd29576a642ffc68bd593628b83d4fc29d
│ │ ├── 6
│ │ │ └── c6f7954a95e6b38ec7d671f712707188e67348cc
│ │ ├── a
│ │ │ └── ca61eed1dc91067dfa6ed3f5b74d34a2d0ab9bb0
│ │ ├── b
│ │ │ └── cb28cc424b56de1da1150f2be02abed22796ec9f
│ │ ├── d
│ │ │ └── cd440fdb214b5d9700e1b93c01e5e1c5966e55ec
│ │ └── e
│ │ │ ├── ce509e56226a3d7b9754d46c14a7af01d598de36
│ │ │ └── ceeda0f46cbde06b0eb684ec48c77c127e6f922d
│ │ ├── d
│ │ ├── 1
│ │ │ └── d114f01eb7aa67ea6d636fb402bc2875fc9a540e
│ │ └── 6
│ │ │ └── d679be53cfc76137570c57644ef7ed248efd6b0c
│ │ ├── e
│ │ ├── 3
│ │ │ └── e352ae894fe12d0ff438998d9ca33cf7608b89fd
│ │ ├── 5
│ │ │ └── e5c06f2a2583733e1fc074683494be5be900643c
│ │ ├── 8
│ │ │ ├── e8724937cf45ef84149507f8c8f2d0f5205d1be2
│ │ │ └── e8d1039e018aa4791dc05e37d92fc9d9652e75a9
│ │ ├── 9
│ │ │ ├── e96dfe9681377b8f062962816751531c1b36fc7f
│ │ │ ├── e9b5b12247f4c4c075839475aba89344314bbd18
│ │ │ └── e9de15a8c0cca0d7275141cec215057f9b805c22
│ │ ├── a
│ │ │ └── eaa78b913c74f6ec67777de3c098e25ad25526f2
│ │ └── e
│ │ │ ├── ee3aa9ef6e6488b0731e708e118eaf67d26ec293
│ │ │ └── eecf348500f72c63507d58424f54c647253123ab
│ │ ├── f
│ │ ├── 1
│ │ │ └── f161d654d6b33f67a05ba8abf7c8a7b8be8f3f53
│ │ ├── 3
│ │ │ └── f3464395c5e983a831a15e79e9d8567b62e53f41
│ │ ├── 6
│ │ │ └── f622045636967b35bb1276b7fdde98264165eec3
│ │ ├── d
│ │ │ ├── fd04797fb58630ff7fcb711e3e9037ba6fd17015
│ │ │ └── fd1c5d1dfffc9e0de9c458efc78f69ea29da60b5
│ │ ├── e
│ │ │ └── feec5e92adb1254d2619b9c64512417842a45712
│ │ └── f
│ │ │ └── ff42517f4efbaffdf73991e6d67a5ac8ec207dec
│ │ └── index.pb
├── uiDesigner.xml
└── vcs.xml
├── README.md
├── design-patterns.iml
├── pom.xml
├── src
├── main
│ └── java
│ │ └── anabneri
│ │ ├── abstractfactory
│ │ ├── app
│ │ │ └── service
│ │ │ │ ├── Client.java
│ │ │ │ ├── factory
│ │ │ │ ├── EJBAbstractFactory.java
│ │ │ │ ├── RestAbstractFactory.java
│ │ │ │ └── ServicesAbstractFactory.java
│ │ │ │ └── services
│ │ │ │ ├── CarEJBService.java
│ │ │ │ ├── CarRestApiService.java
│ │ │ │ ├── CarService.java
│ │ │ │ ├── UserEJBService.java
│ │ │ │ ├── UserRestApiService.java
│ │ │ │ └── UserService.java
│ │ └── apple
│ │ │ ├── Client.java
│ │ │ ├── factory
│ │ │ ├── IPhone11Factory.java
│ │ │ ├── IPhoneFactory.java
│ │ │ ├── IPhoneXFactory.java
│ │ │ └── abstractFactory
│ │ │ │ ├── BrazilianRulesAbstractFactory.java
│ │ │ │ ├── CountryRulesAbstractFactory.java
│ │ │ │ └── USRulesAbstractFactory.java
│ │ │ └── model
│ │ │ ├── certificate
│ │ │ ├── BrazilianCertificate.java
│ │ │ ├── Certificate.java
│ │ │ └── USCertificate.java
│ │ │ ├── iphone
│ │ │ ├── IPhone.java
│ │ │ ├── IPhone11.java
│ │ │ ├── IPhone11Pro.java
│ │ │ ├── IPhoneX.java
│ │ │ └── IPhoneXSMax.java
│ │ │ └── packing
│ │ │ ├── BrazilianPacking.java
│ │ │ ├── Packing.java
│ │ │ └── USPacking.java
│ │ ├── builder
│ │ └── meal
│ │ │ ├── after
│ │ │ ├── Client.java
│ │ │ ├── builder
│ │ │ │ ├── FastFoodMealBuilder.java
│ │ │ │ ├── FatMealBuilder.java
│ │ │ │ ├── JustFriesBuilder.java
│ │ │ │ ├── Menu1Builder.java
│ │ │ │ └── Menu2Builder.java
│ │ │ ├── director
│ │ │ │ └── MealDirector.java
│ │ │ └── model
│ │ │ │ └── FastFoodMeal.java
│ │ │ ├── beforeImplementation
│ │ │ ├── Client.java
│ │ │ └── model
│ │ │ │ └── FastFoodMeal.java
│ │ │ ├── fluent
│ │ │ ├── Client.java
│ │ │ └── model
│ │ │ │ ├── FastFoodMeal.java
│ │ │ │ └── builder
│ │ │ │ └── FastFoodMealBuilder.java
│ │ │ └── functional
│ │ │ ├── Client.java
│ │ │ └── model
│ │ │ └── FastFoodMeal.java
│ │ ├── factory
│ │ ├── app
│ │ │ └── dbadapter
│ │ │ │ ├── after
│ │ │ │ ├── Client.java
│ │ │ │ ├── db
│ │ │ │ │ ├── DB.java
│ │ │ │ │ ├── OracleDB.java
│ │ │ │ │ └── PostgresDB.java
│ │ │ │ └── factory
│ │ │ │ │ ├── DBFactory.java
│ │ │ │ │ ├── OracleFactory.java
│ │ │ │ │ └── PostgresFactory.java
│ │ │ │ └── beforeimplementation
│ │ │ │ ├── Client.java
│ │ │ │ └── db
│ │ │ │ └── OracleDB.java
│ │ └── apple
│ │ │ ├── after
│ │ │ ├── Client.java
│ │ │ ├── factory
│ │ │ │ ├── IPhone11Factory.java
│ │ │ │ ├── IPhone11ProFactory.java
│ │ │ │ ├── IPhoneFactory.java
│ │ │ │ ├── IPhoneXFactory.java
│ │ │ │ └── IPhoneXSMaxFactory.java
│ │ │ └── model
│ │ │ │ ├── IPhone.java
│ │ │ │ ├── IPhone11.java
│ │ │ │ ├── IPhone11Pro.java
│ │ │ │ ├── IPhoneX.java
│ │ │ │ └── IPhoneXSMax.java
│ │ │ ├── beforeImplementation
│ │ │ ├── Client.java
│ │ │ └── model
│ │ │ │ ├── IPhone.java
│ │ │ │ ├── IPhone11.java
│ │ │ │ ├── IPhone11Pro.java
│ │ │ │ ├── IPhoneX.java
│ │ │ │ └── IPhoneXSMax.java
│ │ │ ├── halfSimple
│ │ │ ├── Client.java
│ │ │ ├── factory
│ │ │ │ ├── IPhone11Factory.java
│ │ │ │ ├── IPhoneFactory.java
│ │ │ │ └── IPhoneXFactory.java
│ │ │ └── model
│ │ │ │ ├── IPhone.java
│ │ │ │ ├── IPhone11.java
│ │ │ │ ├── IPhone11Pro.java
│ │ │ │ ├── IPhoneX.java
│ │ │ │ └── IPhoneXSMax.java
│ │ │ └── simple
│ │ │ ├── Client.java
│ │ │ ├── factory
│ │ │ └── IPhoneSimpleFactory.java
│ │ │ └── model
│ │ │ ├── IPhone.java
│ │ │ ├── IPhone11.java
│ │ │ ├── IPhone11Pro.java
│ │ │ ├── IPhoneX.java
│ │ │ └── IPhoneXSMax.java
│ │ ├── prototype
│ │ ├── animation
│ │ │ ├── ClientAnimation.java
│ │ │ └── model
│ │ │ │ ├── Person.java
│ │ │ │ └── PersonSamples.java
│ │ ├── deepShallow
│ │ │ ├── Client.java
│ │ │ └── model
│ │ │ │ ├── Address.java
│ │ │ │ └── User.java
│ │ └── functionalCloneBuilder
│ │ │ ├── Client.java
│ │ │ └── model
│ │ │ ├── Address.java
│ │ │ └── User.java
│ │ └── singleton
│ │ └── connectionPool
│ │ ├── after
│ │ ├── Client.java
│ │ └── conn
│ │ │ ├── Connection.java
│ │ │ └── ConnectionPool.java
│ │ ├── beforeImplementation
│ │ ├── Client.java
│ │ └── conn
│ │ │ ├── Connection.java
│ │ │ └── ConnectionPool.java
│ │ └── monostate
│ │ ├── Client.java
│ │ └── conn
│ │ ├── Connection.java
│ │ └── ConnectionPool.java
└── test
│ └── java
│ └── anabneri
│ └── AppTest.java
└── target
├── classes
└── anabneri
│ ├── abstractfactory
│ ├── app
│ │ └── service
│ │ │ ├── Client.class
│ │ │ ├── factory
│ │ │ ├── EJBAbstractFactory.class
│ │ │ ├── RestAbstractFactory.class
│ │ │ └── ServicesAbstractFactory.class
│ │ │ └── services
│ │ │ ├── CarEJBService.class
│ │ │ ├── CarRestApiService.class
│ │ │ ├── CarService.class
│ │ │ ├── UserEJBService.class
│ │ │ ├── UserRestApiService.class
│ │ │ └── UserService.class
│ └── apple
│ │ ├── Client.class
│ │ ├── factory
│ │ ├── IPhone11Factory.class
│ │ ├── IPhoneFactory.class
│ │ ├── IPhoneXFactory.class
│ │ └── abstractFactory
│ │ │ ├── BrazilianRulesAbstractFactory.class
│ │ │ ├── CountryRulesAbstractFactory.class
│ │ │ └── USRulesAbstractFactory.class
│ │ └── model
│ │ ├── certificate
│ │ ├── BrazilianCertificate.class
│ │ ├── Certificate.class
│ │ └── USCertificate.class
│ │ ├── iphone
│ │ ├── IPhone.class
│ │ ├── IPhone11.class
│ │ ├── IPhone11Pro.class
│ │ ├── IPhoneX.class
│ │ └── IPhoneXSMax.class
│ │ └── packing
│ │ ├── BrazilianPacking.class
│ │ ├── Packing.class
│ │ └── USPacking.class
│ ├── builder
│ └── meal
│ │ ├── after
│ │ ├── Client.class
│ │ ├── builder
│ │ │ ├── FastFoodMealBuilder.class
│ │ │ ├── FatMealBuilder.class
│ │ │ ├── JustFriesBuilder.class
│ │ │ ├── Menu1Builder.class
│ │ │ └── Menu2Builder.class
│ │ ├── director
│ │ │ └── MealDirector.class
│ │ └── model
│ │ │ └── FastFoodMeal.class
│ │ ├── beforeImplementation
│ │ ├── Client.class
│ │ └── model
│ │ │ └── FastFoodMeal.class
│ │ ├── fluent
│ │ ├── Client.class
│ │ └── model
│ │ │ ├── FastFoodMeal.class
│ │ │ └── builder
│ │ │ └── FastFoodMealBuilder.class
│ │ └── functional
│ │ ├── Client.class
│ │ └── model
│ │ ├── FastFoodMeal$Builder.class
│ │ └── FastFoodMeal.class
│ ├── factory
│ ├── app
│ │ └── dbadapter
│ │ │ ├── after
│ │ │ ├── Client.class
│ │ │ ├── db
│ │ │ │ ├── DB.class
│ │ │ │ ├── OracleDB.class
│ │ │ │ └── PostgresDB.class
│ │ │ └── factory
│ │ │ │ ├── DBFactory.class
│ │ │ │ ├── OracleFactory.class
│ │ │ │ └── PostgresFactory.class
│ │ │ └── beforeimplementation
│ │ │ ├── Client.class
│ │ │ └── db
│ │ │ └── OracleDB.class
│ └── apple
│ │ ├── after
│ │ ├── Client.class
│ │ ├── factory
│ │ │ ├── IPhone11Factory.class
│ │ │ ├── IPhone11ProFactory.class
│ │ │ ├── IPhoneFactory.class
│ │ │ ├── IPhoneXFactory.class
│ │ │ └── IPhoneXSMaxFactory.class
│ │ └── model
│ │ │ ├── IPhone.class
│ │ │ ├── IPhone11.class
│ │ │ ├── IPhone11Pro.class
│ │ │ ├── IPhoneX.class
│ │ │ └── IPhoneXSMax.class
│ │ ├── beforeImplementation
│ │ ├── Client.class
│ │ └── model
│ │ │ ├── IPhone.class
│ │ │ ├── IPhone11.class
│ │ │ ├── IPhone11Pro.class
│ │ │ ├── IPhoneX.class
│ │ │ └── IPhoneXSMax.class
│ │ ├── halfSimple
│ │ ├── Client.class
│ │ ├── factory
│ │ │ ├── IPhone11Factory.class
│ │ │ ├── IPhoneFactory.class
│ │ │ └── IPhoneXFactory.class
│ │ └── model
│ │ │ ├── IPhone.class
│ │ │ ├── IPhone11.class
│ │ │ ├── IPhone11Pro.class
│ │ │ ├── IPhoneX.class
│ │ │ └── IPhoneXSMax.class
│ │ └── simple
│ │ ├── Client.class
│ │ ├── factory
│ │ └── IPhoneSimpleFactory.class
│ │ └── model
│ │ ├── IPhone.class
│ │ ├── IPhone11.class
│ │ ├── IPhone11Pro.class
│ │ ├── IPhoneX.class
│ │ └── IPhoneXSMax.class
│ ├── prototype
│ ├── animation
│ │ ├── ClientAnimation.class
│ │ └── model
│ │ │ ├── Person.class
│ │ │ └── PersonSamples.class
│ ├── deepShallow
│ │ ├── Client.class
│ │ └── model
│ │ │ ├── Address.class
│ │ │ └── User.class
│ └── functionalCloneBuilder
│ │ ├── Client.class
│ │ └── model
│ │ ├── Address$Builder.class
│ │ ├── Address.class
│ │ ├── User$1.class
│ │ ├── User$Builder.class
│ │ └── User.class
│ └── singleton
│ └── connectionPool
│ ├── after
│ ├── Client.class
│ └── conn
│ │ ├── Connection.class
│ │ └── ConnectionPool.class
│ ├── beforeImplementation
│ ├── Client.class
│ └── conn
│ │ ├── Connection.class
│ │ └── ConnectionPool.class
│ └── monostate
│ ├── Client.class
│ └── conn
│ ├── Connection.class
│ └── ConnectionPool.class
└── test-classes
└── anabneri
└── AppTest.class
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | design-patterns
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__junit_junit_4_11.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/2/0296c4037f9db500e6131d0f31dc3b87bb47477a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/0/2/0296c4037f9db500e6131d0f31dc3b87bb47477a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/8/08f3a13dadec1c44dc5e26e866dacd77d33a6725:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/0/8/08f3a13dadec1c44dc5e26e866dacd77d33a6725
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/a/0a85a07e32f15af0b626935c98fa4b2a23b783a6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/0/a/0a85a07e32f15af0b626935c98fa4b2a23b783a6
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/a/0ad7abcf9376d082ec919388812e623c329d4787:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/0/a/0ad7abcf9376d082ec919388812e623c329d4787
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/e/0e0022a3d1f658366a1480f4a1ce3e0f8a9367ee:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/0/e/0e0022a3d1f658366a1480f4a1ce3e0f8a9367ee
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/0/10d82019e45c50f55095ef211c8152878d49ea6d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/1/0/10d82019e45c50f55095ef211c8152878d49ea6d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/2/123febe613ee03b60825dc14bd5b9310393622b4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/1/2/123febe613ee03b60825dc14bd5b9310393622b4
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/9/1900ab0ecc223aa0ba538a6f9c144e551f92d74a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/1/9/1900ab0ecc223aa0ba538a6f9c144e551f92d74a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/b/1b12dff50d5ab769e4ff347a37ec84bc276b86be:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/1/b/1b12dff50d5ab769e4ff347a37ec84bc276b86be
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/e/1e4fae9c4fb9b40457eee5c46d90f6f72fcc9564:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/1/e/1e4fae9c4fb9b40457eee5c46d90f6f72fcc9564
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/1/21837a557f61ac80c55270341caa69b3a154b703:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/2/1/21837a557f61ac80c55270341caa69b3a154b703
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/4/244c4458b375b7cfd1dadf49cd52cc9af70ebd22:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/2/4/244c4458b375b7cfd1dadf49cd52cc9af70ebd22
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/d/2d579fc4728a4655a59d39ef38848af7ef4a3a06:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/2/d/2d579fc4728a4655a59d39ef38848af7ef4a3a06
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/e/2ef398257899d47abfef8ab47673263560b5aa21:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/2/e/2ef398257899d47abfef8ab47673263560b5aa21
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/2/3244253a34f9ccb09a521b96a0c4c713335c7104:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/3/2/3244253a34f9ccb09a521b96a0c4c713335c7104
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/2/32db7782c7f26851589a65de50e48da76abbd218:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/3/2/32db7782c7f26851589a65de50e48da76abbd218
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/4/34fd7042cde88952fded0e3bd9f921d4a1823f47:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/3/4/34fd7042cde88952fded0e3bd9f921d4a1823f47
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/c/3c5bcbcfbf92da4fcd6d661362ca8f4d876cf02d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/3/c/3c5bcbcfbf92da4fcd6d661362ca8f4d876cf02d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/d/3dbb2cfb8b5a17cb2fd76dec3bb24c3848fd81d4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/3/d/3dbb2cfb8b5a17cb2fd76dec3bb24c3848fd81d4
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/2/42989b39236403e32600ebd089136bfd2d350a53:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/2/42989b39236403e32600ebd089136bfd2d350a53
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/3/4371572063ea4b08161caa4c2d0a842684ce1a3f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/3/4371572063ea4b08161caa4c2d0a842684ce1a3f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/6/466dd7f3a99bafcc07253713d3ac495d0da916c9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/6/466dd7f3a99bafcc07253713d3ac495d0da916c9
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/a/4a668bd8bf7f212a192a9350195cf59a20fc7cbe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/a/4a668bd8bf7f212a192a9350195cf59a20fc7cbe
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/e/4e542b541a54df10e73b629a52bde3f2ea67850b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/e/4e542b541a54df10e73b629a52bde3f2ea67850b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/f/4fc0c39c0fde617d50632c222a5d74f4e8fda7f3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/f/4fc0c39c0fde617d50632c222a5d74f4e8fda7f3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/f/4fcc37483f79a0a00b1e6596dae3cca9c8a51ebb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/4/f/4fcc37483f79a0a00b1e6596dae3cca9c8a51ebb
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/3/534f8369b88cab068b62a53e6eb7005970802b0e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/5/3/534f8369b88cab068b62a53e6eb7005970802b0e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/8/58dc71713b0817497ddf392dbf1f85f59aaeab8a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/5/8/58dc71713b0817497ddf392dbf1f85f59aaeab8a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/9/59b14fd965aec88ce215a18405f32c3fc1bfc0bf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/5/9/59b14fd965aec88ce215a18405f32c3fc1bfc0bf
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/a/5a8114c3dc390a0513a7308266665fd862c76a39:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/5/a/5a8114c3dc390a0513a7308266665fd862c76a39
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/1/611612687f0ab0a0082a53c3b23c5cf1534be036:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/6/1/611612687f0ab0a0082a53c3b23c5cf1534be036
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/3/631ba01c168076e5a74ac94d00ad59b9214a1961:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/6/3/631ba01c168076e5a74ac94d00ad59b9214a1961
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/8/685268a27249c63cc37ea3a0f131843c75fe1891:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/6/8/685268a27249c63cc37ea3a0f131843c75fe1891
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/9/69d65151f033ad21651d419eadded16b69be95ac:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/6/9/69d65151f033ad21651d419eadded16b69be95ac
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/b/6b0c2387458172826b09ad64e2741b5bcb3ce89f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/6/b/6b0c2387458172826b09ad64e2741b5bcb3ce89f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/1/715bb7724c0094bdff810940c8704fd329ebf331:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/1/715bb7724c0094bdff810940c8704fd329ebf331
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/1/71891a05f8df5962ac6dc50bfd847f52742f806a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/1/71891a05f8df5962ac6dc50bfd847f52742f806a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/2/723d4cc5da95930ccdd3ec27556604dc1385bf5a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/2/723d4cc5da95930ccdd3ec27556604dc1385bf5a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/3/7399021ddf9b31c7b12f792343bb858db0c418c8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/3/7399021ddf9b31c7b12f792343bb858db0c418c8
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/8/784be3051751e18aba8bacbd03058a6467135208:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/8/784be3051751e18aba8bacbd03058a6467135208
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/8/78d5143888758d9af8526c2d2799ecef108f55da:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/8/78d5143888758d9af8526c2d2799ecef108f55da
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/c/7c685dd5bae94dab4d70d79205949f344b728afb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/c/7c685dd5bae94dab4d70d79205949f344b728afb
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/c/7cacfd2f45f337a0f5c6b80cfac150b19de88bd3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/c/7cacfd2f45f337a0f5c6b80cfac150b19de88bd3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/d/7df4d24f92d603152e384aebb25003b1545d405a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/d/7df4d24f92d603152e384aebb25003b1545d405a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/f/7f03dba518d82fb3d81e15259a7fcb45537bdb54:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/f/7f03dba518d82fb3d81e15259a7fcb45537bdb54
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/f/7fa3599d83b7a419ed1f5678fe6d9b019846de38:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/7/f/7fa3599d83b7a419ed1f5678fe6d9b019846de38
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/0/80a889ef521d1151ed1ce8294506a5f9642050cb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/8/0/80a889ef521d1151ed1ce8294506a5f9642050cb
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/6/867ae4631ff8aea214de28d450aa7af5e849529a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/8/6/867ae4631ff8aea214de28d450aa7af5e849529a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/a/8ac44397c663e11244ca2397c5c43c2c564dc871:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/8/a/8ac44397c663e11244ca2397c5c43c2c564dc871
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/d/8d4f36dc2ffff1cd03b0f06841ac06497932df8b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/8/d/8d4f36dc2ffff1cd03b0f06841ac06497932df8b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/1/91550ea04c768ea6d1b3715490f07005f59bb451:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/1/91550ea04c768ea6d1b3715490f07005f59bb451
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/2/9248a1b7c9eb4dbc9eaa026a7ee97428ab673a45:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/2/9248a1b7c9eb4dbc9eaa026a7ee97428ab673a45
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/3/934477083639540a81992df211ef963811613525:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/3/934477083639540a81992df211ef963811613525
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/5/950a7d69531342a33206832997d86f976f38d091:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/5/950a7d69531342a33206832997d86f976f38d091
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/7/97855688deb6d3aae03a1e50ef9b9a49dd31e360:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/7/97855688deb6d3aae03a1e50ef9b9a49dd31e360
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/9/9909dddae976cd900f4d28b2a6d274021694018f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/9/9909dddae976cd900f4d28b2a6d274021694018f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/9/993d8d45648b8e5036586b85c313cf589cf78f90:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/9/993d8d45648b8e5036586b85c313cf589cf78f90
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/e/9eeafdbf672eefdbbb294533fa1e497fd36a84ad:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/9/e/9eeafdbf672eefdbbb294533fa1e497fd36a84ad
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/2/a24d7a5aba8fc11acf6f154cc5bcb69c2b0cf1b7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/a/2/a24d7a5aba8fc11acf6f154cc5bcb69c2b0cf1b7
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/3/a328b8eb90a8a414243f7fc9bcb34a371856f982:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/a/3/a328b8eb90a8a414243f7fc9bcb34a371856f982
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/6/a673cb2776ac92671796e996f10df0675d4cbb2e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/a/6/a673cb2776ac92671796e996f10df0675d4cbb2e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/9/a9029b55083d2cd7487fa78a838a4f7261e4d4bc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/a/9/a9029b55083d2cd7487fa78a838a4f7261e4d4bc
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/d/ad17f14270bdefe7f5e14e8a305e0abaf5529c2e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/a/d/ad17f14270bdefe7f5e14e8a305e0abaf5529c2e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/e/ae451f0ca01db262a1c494cc3c37f70a5a116b89:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/a/e/ae451f0ca01db262a1c494cc3c37f70a5a116b89
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/3/b3d59206cfa973d76abdac3e18369846a455bc5a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/3/b3d59206cfa973d76abdac3e18369846a455bc5a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/6/b62e7a3f4bca69702b7c3064b23bcc120e082145:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/6/b62e7a3f4bca69702b7c3064b23bcc120e082145
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/9/b95f48f43e1edcf8bfa19655cc97a76886e5b1d2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/9/b95f48f43e1edcf8bfa19655cc97a76886e5b1d2
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/d/bdcb6a9cd01066a763da35baa52e78266f328e83:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/d/bdcb6a9cd01066a763da35baa52e78266f328e83
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/d/bddcb71f9cc73c9fafe84f032e4cf81247a2e486:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/d/bddcb71f9cc73c9fafe84f032e4cf81247a2e486
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/e/beb0aed7c6f55ea4f5df22cbea9e62ab943070c8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/e/beb0aed7c6f55ea4f5df22cbea9e62ab943070c8
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/f/bfae9a4ecb5dfb174ed42ea397409c5d588a4367:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/f/bfae9a4ecb5dfb174ed42ea397409c5d588a4367
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/f/bfff929ad4319650185ad47badb15f49b9818fe0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/b/f/bfff929ad4319650185ad47badb15f49b9818fe0
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/2/c263216d5ddc7c10f219c26f5a69b65fb111490a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/2/c263216d5ddc7c10f219c26f5a69b65fb111490a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/3/c38b4bdd29576a642ffc68bd593628b83d4fc29d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/3/c38b4bdd29576a642ffc68bd593628b83d4fc29d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/6/c6f7954a95e6b38ec7d671f712707188e67348cc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/6/c6f7954a95e6b38ec7d671f712707188e67348cc
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/a/ca61eed1dc91067dfa6ed3f5b74d34a2d0ab9bb0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/a/ca61eed1dc91067dfa6ed3f5b74d34a2d0ab9bb0
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/b/cb28cc424b56de1da1150f2be02abed22796ec9f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/b/cb28cc424b56de1da1150f2be02abed22796ec9f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/d/cd440fdb214b5d9700e1b93c01e5e1c5966e55ec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/d/cd440fdb214b5d9700e1b93c01e5e1c5966e55ec
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/e/ce509e56226a3d7b9754d46c14a7af01d598de36:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/e/ce509e56226a3d7b9754d46c14a7af01d598de36
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/e/ceeda0f46cbde06b0eb684ec48c77c127e6f922d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/c/e/ceeda0f46cbde06b0eb684ec48c77c127e6f922d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/1/d114f01eb7aa67ea6d636fb402bc2875fc9a540e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/d/1/d114f01eb7aa67ea6d636fb402bc2875fc9a540e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/6/d679be53cfc76137570c57644ef7ed248efd6b0c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/d/6/d679be53cfc76137570c57644ef7ed248efd6b0c
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/3/e352ae894fe12d0ff438998d9ca33cf7608b89fd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/3/e352ae894fe12d0ff438998d9ca33cf7608b89fd
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/5/e5c06f2a2583733e1fc074683494be5be900643c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/5/e5c06f2a2583733e1fc074683494be5be900643c
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/8/e8724937cf45ef84149507f8c8f2d0f5205d1be2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/8/e8724937cf45ef84149507f8c8f2d0f5205d1be2
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/8/e8d1039e018aa4791dc05e37d92fc9d9652e75a9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/8/e8d1039e018aa4791dc05e37d92fc9d9652e75a9
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/9/e96dfe9681377b8f062962816751531c1b36fc7f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/9/e96dfe9681377b8f062962816751531c1b36fc7f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/9/e9b5b12247f4c4c075839475aba89344314bbd18:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/9/e9b5b12247f4c4c075839475aba89344314bbd18
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/9/e9de15a8c0cca0d7275141cec215057f9b805c22:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/9/e9de15a8c0cca0d7275141cec215057f9b805c22
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/a/eaa78b913c74f6ec67777de3c098e25ad25526f2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/a/eaa78b913c74f6ec67777de3c098e25ad25526f2
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/e/ee3aa9ef6e6488b0731e708e118eaf67d26ec293:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/e/ee3aa9ef6e6488b0731e708e118eaf67d26ec293
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/e/eecf348500f72c63507d58424f54c647253123ab:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/e/e/eecf348500f72c63507d58424f54c647253123ab
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/1/f161d654d6b33f67a05ba8abf7c8a7b8be8f3f53:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/1/f161d654d6b33f67a05ba8abf7c8a7b8be8f3f53
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/3/f3464395c5e983a831a15e79e9d8567b62e53f41:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/3/f3464395c5e983a831a15e79e9d8567b62e53f41
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/6/f622045636967b35bb1276b7fdde98264165eec3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/6/f622045636967b35bb1276b7fdde98264165eec3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/d/fd04797fb58630ff7fcb711e3e9037ba6fd17015:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/d/fd04797fb58630ff7fcb711e3e9037ba6fd17015
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/d/fd1c5d1dfffc9e0de9c458efc78f69ea29da60b5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/d/fd1c5d1dfffc9e0de9c458efc78f69ea29da60b5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/e/feec5e92adb1254d2619b9c64512417842a45712:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/e/feec5e92adb1254d2619b9c64512417842a45712
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/f/ff42517f4efbaffdf73991e6d67a5ac8ec207dec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/f/f/ff42517f4efbaffdf73991e6d67a5ac8ec207dec
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/index.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/.idea/sonarlint/issuestore/index.pb
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Padrões de Projetos Criacionais PT-BR 🇧🇷
2 |
3 | Cada padrão descreve um problema que ocorre frequentemente. Descreve uma solução que possa ser usada outras vezes na prática e sempre adaptar para outra solução que pode ou não ser exsitente.
4 |
5 |
6 |
7 | ## Factory Method
8 | É um padrão que define a instanciação de outras classes.
9 |
10 | **Meu Problema:**
11 |
12 | * Como posso escrever um código onde as classes instanciadas possam variar dentro de uma mesma interface?
13 |
14 | * Tenho muito acoplamento dentro da minha aplicação!
15 |
16 | * E como consigo deixar meu código desacoplado das classes concretas?
17 |
18 | **Solução do Factory:**
19 |
20 | * Extrair a lógica de criação dos objetos para um factory method.
21 |
22 | * Invocar o factory method para receber uma instância qualquer que implemente uma determinada interface.
23 |
24 |
25 | > Dentro do factory method podem ser abordadas outras formas, no livro do GOF nomeia-se de *Simple* e *Half-Simple*
26 |
27 | *Half-Simple:* Coloca-se as classes concretas com um nome de factory dentro de uma interface, e depois é chamadas as factorys nos construtores.
28 | Algumas desvantagens dessa abordagem é a complexidade e um código não usual.
29 |
30 | *Simple:* Modelos de factory mais simples. Uso uma única classe que encapsula as demais com os parâmtros necessários.
31 |
32 |
33 | ## Abstract Factory
34 | Provê uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
35 |
36 | **Meu Problema:**
37 |
38 | * Como posso criar um código onde as classes instanciadas possam variar de acordo com a modificação?
39 |
40 | * Como consigo garantir que um conjunto de objetos relacionados ou dependentes possam ser criados mantendo o contexto único?
41 |
42 | **Solução do Abstract Factory:**
43 |
44 | * Extrair a lógica de criação dos objetos para um abstract factory (fábrica).
45 |
46 | * Criar uma implementação do abstract factory para cada contexto, dessa forma consigo garantir que todos os objetos estejam relacionados entre si.
47 |
48 |
49 | > No Abstract Factory utiliza-se de classes relacionadas para aplicar na necessidade do contexto entendido
50 | > Factory Method e Abstract Factory podem ser usados juntos! Pode tornar seu código flexível.
51 |
52 |
53 | ## Singleton
54 | Neste padrão é provido um ponto de acesso global. Garante que uma classe só tenha um única instância.
55 | *É um padrão não muito aceito dentro da comunidade por ferir alguns pontos do SOLID*
56 |
57 | **Meu Problema:**
58 |
59 | * Como posso garantir que uma classe tenha apenas uma instância?
60 |
61 | * Como fazer com que essa instância possa ser acessível globalmente?
62 |
63 | **Solução do Singleton:**
64 | * Esconder o construtor dessa classe.
65 |
66 | * Defino um ponto de criação estático PRIVATE que retorne uma instância única.
67 |
68 | *Quanto menor o acoplamento melhor*
69 |
70 | > **Desvantagens do Singleton:** Esse design pattern costuma não ser muito aceito dentro da comunidade, como dito anteriormente por ferir alguns princípios de SOLID, e uma grande desvatagem de utiliza-lo é a possiblidade de trabalhar apenas com classes concretas, para a implementação de uma interface por exemplo, não é possível.
71 |
72 |
73 | ## Builder
74 | Padrão que sempre foi evoluindo conforme necessidade software e entrega, trazendo outras abordagens.
75 |
76 | **Meu Problme:**
77 | * Como uma classe pode criar diferentes representações de um mesmo objeto implementado de forma complexa? - Objeto implementado de forma complexa é aquele objeto que possui muitos atribuots. Ex.: Pessoa Fisica-
78 |
79 | **Solução do Builder:**
80 | * Delegar a função do objeto para um método que irá construir suas caracteristicas ao invés de instanciar o objeto diretamente
81 |
82 | * Dividir a criação do objeto em partes
83 |
84 | * Ecncapsular a criação e montagem dessas partes em um builder separado.
85 |
86 |
87 | ## Prototype
88 | Neste padrão é posspivel criar um objeto a partir de um protótipo, mais comummente conhecido como clone. Aqui também é possível trabalhar em cima de objetos clonados, o que proporciona a evolução do estado da aplicação.
89 |
90 | É legal salientar que no prototype especificamos os tipos dos objetos a serem criados usando uma instância e depois cria-se novos objetos ao copiar este protótipo.
91 | Ex.: Dentro do código do projeto onde encapsulo a *Pessoa* com um método *clone*
92 |
93 | **Meus Problemas:**
94 | * Como posso criar um novo objeto aproveitando o estado previamente existente de outro objeto?
95 |
96 |
97 | **Solução do Propotype:**
98 | * Definir um prototype que retorna a cópia de si mesmo
99 |
100 |
101 | ...
102 |
103 | Espero que minhas anotações e meu projeto com exemplos tenha ajudado de alguma forma ou reforçado algum conceito de Polimorfismo, Orientação a Objetos além do essencial que é os Design Patterns Criacionais!
104 |
105 |
106 |
107 | # Creational Design Patterns EN-US 🇺🇸
108 | Each pattern describes a problem that occurs frequently. Describes a solution that can be used other times in practice and always adapt to another solution that may or may not be exsitent.
109 |
110 | Part of these notes are from my learning from the course "Design Patterns in Java - COD3R" and the book "GOF - Design Patterns: Reusable Object Oriented Software Elements"
111 |
112 | ...
113 |
114 | ## Factory Method
115 | It is a pattern that defines the instantiation of other classes.
116 |
117 | **My Problem:**
118 |
119 | * How can I write code where instantiated classes may vary within the same interface?
120 |
121 | * I have a lot of coupling within my application!
122 |
123 | * And how do I get my code unbound from the concrete classes?
124 |
125 | **Factory solution:**
126 |
127 | * Extract the creation logic of the objects to a factory method.
128 |
129 | * Invoke the factory method to receive any instance that implements a particular interface.
130 |
131 | > Within the factory method can be addressed in other ways, in the GOF book it is called *Simple* and *Half-Simple*
132 |
133 | *Half-Simple:* You place the concrete classes with a factory name inside an interface, and then the factorys are called in the constructors.
134 | Some disadvantages of this approach are complexity and unusual code.
135 |
136 | *Simple:* Simpler factory models. I use a single class that encapsulates the other ones with the necessary parameters.
137 |
138 | ## Abstract Factory
139 | Provides an interface for creating families of related or dependent objects without specifying their concrete classes.
140 |
141 | **My Problem:**
142 |
143 | * How can I create code where instantiated classes may vary depending on the modification?
144 |
145 | * How can I ensure that a set of related or dependent objects can be created while maintaining the single context?
146 |
147 | **Abstract Factory Solution:**
148 |
149 | * Extract the creation logic of the objects to an abstract factory.
150 |
151 | * Create an abstract factory implementation for each context, so I can ensure that all objects are related to each other.
152 |
153 | > In the Abstract Factory, it uses related classes to apply the need for the understood context
154 | > Factory Method and Abstract Factory can be used together! You can make your code flexible.
155 |
156 | ## Singleton
157 | In this pattern a global access point is provided. Ensures that a class has only one instance.
158 | *It's a not-too-accepted standard within the community for hurting some SOLID points*
159 |
160 | **My Problem:**
161 |
162 | * How can I ensure that a class has only one instance?
163 |
164 | * How can i make this instance accessible globally?
165 |
166 | **Singleton solution:**
167 | * Hide the constructor of this class.
168 |
169 | * I define a PRIVATE static creation point that returns a single instance.
170 |
171 | *The smaller the coupling the better*
172 |
173 | > **Disadvantages of Singleton:** This design pattern is usually not widely accepted within the community, as stated earlier by hurting some principles of SOLID, and a great desvatagem of using it is the possibility of working only with concrete classes, for the implementation of an interface for example, it is not possible.
174 |
175 | ## Builder
176 | Standard that has always been evolving according to software and delivery need, bringing other approaches.
177 |
178 | **My Problme:**
179 | * How can a class create different representations of the same complexly implemented object? - Object implemented in a complex way is that object that has many atribuots. E.g. Physically-
180 |
181 | **Builder Solution:**
182 | * Delegate the object function to a method that will build its characteristics rather than instantiate the object directly
183 |
184 | * Divide object creation into parts
185 |
186 | * Ecncapsular the creation and assembly of these parts in a separate builder.
187 |
188 | ## Prototype
189 | In this pattern it is possible to create an object from a prototype, more commonly known as a clone. Here it is also possible to work on top of cloned objects, which provides the evolution of the state of the application.
190 |
191 | It is nice to note that in prototype we specify the types of objects to be created using an instance and then create new objects when copying this prototype.
192 | E.g. Within the project code where I encapsulat the *Person* with a *clone* method
193 |
194 | **My Problems:**
195 | * How can I create a new object by taking advantage of the previously existing state of another object?
196 |
197 | **Propotype solution:**
198 | * Set a prototype that returns the copy of itself
199 |
200 | ...
201 |
202 | I hope that my notes and my project with examples have helped in some way or reinforced some concept of Polymorphism, Object Orientation beyond the essentials that is Creational Design Patterns!
203 |
--------------------------------------------------------------------------------
/design-patterns.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | 4.0.0
6 |
7 | anabneri
8 | design-patterns
9 | design-patterns
10 |
11 | design-patterns
12 |
13 | http://www.example.com
14 |
15 |
16 | UTF-8
17 | 1.7
18 | 1.7
19 |
20 |
21 |
22 |
23 | junit
24 | junit
25 | 4.11
26 | test
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | maven-clean-plugin
36 | 3.1.0
37 |
38 |
39 |
40 | maven-resources-plugin
41 | 3.0.2
42 |
43 |
44 | maven-compiler-plugin
45 | 3.8.0
46 |
47 |
48 | maven-surefire-plugin
49 | 2.22.1
50 |
51 |
52 | maven-jar-plugin
53 | 3.0.2
54 |
55 |
56 | maven-install-plugin
57 | 2.5.2
58 |
59 |
60 | maven-deploy-plugin
61 | 2.8.2
62 |
63 |
64 |
65 | maven-site-plugin
66 | 3.7.1
67 |
68 |
69 | maven-project-info-reports-plugin
70 | 3.0.0
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service;
2 |
3 |
4 | import anabneri.abstractfactory.app.service.factory.EJBAbstractFactory;
5 | import anabneri.abstractfactory.app.service.factory.ServicesAbstractFactory;
6 | import anabneri.abstractfactory.app.service.services.CarService;
7 | import anabneri.abstractfactory.app.service.services.UserService;
8 |
9 | public class Client {
10 |
11 | public static void main(String[] args) {
12 | ServicesAbstractFactory factory = new EJBAbstractFactory();
13 | // ServicesAbstractFactory factory = new RestAbstractFactory();
14 |
15 | UserService userService = factory.getUserService();
16 | userService.save("Jhon");
17 | userService.delete(5);
18 |
19 | CarService carService = factory.getCarService();
20 | carService.save("Prius");
21 | carService.update("Tesla X");
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/factory/EJBAbstractFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.factory;
2 |
3 |
4 | import anabneri.abstractfactory.app.service.services.CarEJBService;
5 | import anabneri.abstractfactory.app.service.services.CarService;
6 | import anabneri.abstractfactory.app.service.services.UserEJBService;
7 | import anabneri.abstractfactory.app.service.services.UserService;
8 |
9 | public class EJBAbstractFactory implements ServicesAbstractFactory {
10 |
11 | @Override
12 | public UserService getUserService() {
13 | return new UserEJBService();
14 | }
15 |
16 | @Override
17 | public CarService getCarService() {
18 | return new CarEJBService();
19 | }
20 |
21 | }
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/factory/RestAbstractFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.factory;
2 |
3 |
4 | import anabneri.abstractfactory.app.service.services.CarRestApiService;
5 | import anabneri.abstractfactory.app.service.services.CarService;
6 | import anabneri.abstractfactory.app.service.services.UserRestApiService;
7 | import anabneri.abstractfactory.app.service.services.UserService;
8 |
9 | public class RestAbstractFactory implements ServicesAbstractFactory {
10 |
11 | @Override
12 | public UserService getUserService() {
13 | return new UserRestApiService();
14 | }
15 |
16 | @Override
17 | public CarService getCarService() {
18 | return new CarRestApiService();
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/factory/ServicesAbstractFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.factory;
2 |
3 | import anabneri.abstractfactory.app.service.services.CarService;
4 | import anabneri.abstractfactory.app.service.services.UserService;
5 |
6 | public interface ServicesAbstractFactory {
7 |
8 | UserService getUserService();
9 |
10 | CarService getCarService();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/services/CarEJBService.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.services;
2 |
3 | public class CarEJBService implements CarService {
4 |
5 | @Override
6 | public void save(String model) {
7 | System.out.println("Saving " + model + " car through EJB's interface");
8 | }
9 |
10 | @Override
11 | public void update(String newModel) {
12 | System.out.println("Updating " + newModel + " car through EJB's interface");
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/services/CarRestApiService.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.services;
2 |
3 | public class CarRestApiService implements CarService {
4 |
5 | @Override
6 | public void save(String model) {
7 | System.out.println("Saving " + model + " car through Rest's interface");
8 | }
9 |
10 | @Override
11 | public void update(String newModel) {
12 | System.out.println("Updating " + newModel + " car through Rest's interface");
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/services/CarService.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.services;
2 |
3 | public interface CarService {
4 | void save(String model);
5 | void update(String newModel);
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/services/UserEJBService.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.services;
2 |
3 | public class UserEJBService implements UserService {
4 |
5 | @Override
6 | public void save(String name) {
7 | System.out.println("Saving " + name + " through EJB's interface");
8 | }
9 |
10 | @Override
11 | public boolean delete(Integer id) {
12 | System.out.println("Removing User #" + id + " through EJB's interface");
13 | return true;
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/services/UserRestApiService.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.services;
2 |
3 | public class UserRestApiService implements UserService {
4 |
5 | @Override
6 | public void save(String name) {
7 | System.out.println("Saving " + name + " through Rest's interface");
8 | }
9 |
10 | @Override
11 | public boolean delete(Integer id) {
12 | System.out.println("Removing User #" + id + " through Rest's interface");
13 | return true;
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/app/service/services/UserService.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.app.service.services;
2 |
3 | public interface UserService {
4 | void save(String name);
5 | boolean delete(Integer id);
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple;
2 |
3 |
4 |
5 | import anabneri.abstractfactory.apple.factory.abstractFactory.BrazilianRulesAbstractFactory;
6 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
7 | import anabneri.factory.apple.beforeImplementation.model.IPhone;
8 |
9 | public class Client {
10 |
11 | public static void main(String[] args) {
12 |
13 | // regras ficam separadas de tal forma que se for necessario implementar uma nova regra
14 | // não muda na construção, e um código flexivel
15 | CountryRulesAbstractFactory rules = new BrazilianRulesAbstractFactory();
16 | // IPhoneFactory genXFactory = new IPhoneXFactory(rules);
17 | // IPhoneFactory gen11Factory = new IPhone11Factory(rules);
18 | //
19 | System.out.println("### Ordering an iPhone X");
20 | // IPhone iphone = genXFactory.orderIPhone("standard");
21 | // System.out.println(iphone);
22 |
23 | System.out.println("\n\n### Ordering an iPhone 11 HighEnd");
24 | // IPhone iphone2 = gen11Factory.orderIPhone("highEnd");
25 | // System.out.println(iphone2);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/factory/IPhone11Factory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.factory;
2 |
3 |
4 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
5 | import anabneri.abstractfactory.apple.model.iphone.IPhone;
6 | import anabneri.abstractfactory.apple.model.iphone.IPhone11;
7 | import anabneri.abstractfactory.apple.model.iphone.IPhone11Pro;
8 |
9 | public class IPhone11Factory extends IPhoneFactory {
10 |
11 | public IPhone11Factory(CountryRulesAbstractFactory rules) {
12 | super(rules);
13 | }
14 |
15 | public IPhone createIPhone(String level) {
16 | if(level.equals("standard")) {
17 | return new IPhone11(rules);
18 | } else if(level.equals("highEnd")) {
19 | return new IPhone11Pro(rules);
20 | } else return null;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/factory/IPhoneFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.factory;
2 |
3 |
4 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
5 | import anabneri.abstractfactory.apple.model.iphone.IPhone;
6 |
7 | public abstract class IPhoneFactory {
8 | CountryRulesAbstractFactory rules;
9 |
10 | public IPhoneFactory(CountryRulesAbstractFactory rules) {
11 | this.rules = rules;
12 | }
13 |
14 | public IPhone orderIPhone(String level) {
15 | IPhone device = null;
16 |
17 | device = createIPhone(level);
18 |
19 | device.getHardware();
20 | device.assemble();
21 | device.certificates();
22 | device.pack();
23 |
24 | return device;
25 | }
26 |
27 | protected abstract IPhone createIPhone(String level);
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/factory/IPhoneXFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.factory;
2 |
3 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
4 | import anabneri.abstractfactory.apple.model.iphone.IPhone;
5 | import anabneri.abstractfactory.apple.model.iphone.IPhoneX;
6 | import anabneri.abstractfactory.apple.model.iphone.IPhoneXSMax;
7 |
8 |
9 | public class IPhoneXFactory extends IPhoneFactory {
10 |
11 | public IPhoneXFactory(CountryRulesAbstractFactory rules) {
12 | super(rules);
13 | }
14 |
15 | public IPhone createIPhone(String level) {
16 | if(level.equals("standard")) {
17 | return new IPhoneX(rules);
18 | } else if(level.equals("highEnd")) {
19 | return new IPhoneXSMax(rules);
20 | } else return null;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/factory/abstractFactory/BrazilianRulesAbstractFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.factory.abstractFactory;
2 |
3 |
4 | import anabneri.abstractfactory.apple.model.certificate.BrazilianCertificate;
5 | import anabneri.abstractfactory.apple.model.certificate.Certificate;
6 | import anabneri.abstractfactory.apple.model.packing.BrazilianPacking;
7 | import anabneri.abstractfactory.apple.model.packing.Packing;
8 |
9 | public class BrazilianRulesAbstractFactory implements CountryRulesAbstractFactory {
10 |
11 | public Certificate getCertificates() {
12 | return new BrazilianCertificate();
13 | }
14 |
15 | public Packing getPacking() {
16 | return new BrazilianPacking();
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/factory/abstractFactory/CountryRulesAbstractFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.factory.abstractFactory;
2 |
3 | import anabneri.abstractfactory.apple.model.certificate.Certificate;
4 | import anabneri.abstractfactory.apple.model.packing.Packing;
5 |
6 | public interface CountryRulesAbstractFactory {
7 | Certificate getCertificates();
8 |
9 | Packing getPacking();
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/factory/abstractFactory/USRulesAbstractFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.factory.abstractFactory;
2 |
3 |
4 | import anabneri.abstractfactory.apple.model.certificate.Certificate;
5 | import anabneri.abstractfactory.apple.model.certificate.USCertificate;
6 | import anabneri.abstractfactory.apple.model.packing.Packing;
7 | import anabneri.abstractfactory.apple.model.packing.USPacking;
8 |
9 | public class USRulesAbstractFactory implements CountryRulesAbstractFactory {
10 |
11 | public Certificate getCertificates() {
12 | return new USCertificate();
13 | }
14 |
15 | public Packing getPacking() {
16 | return new USPacking();
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/certificate/BrazilianCertificate.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.certificate;
2 |
3 | public class BrazilianCertificate implements Certificate {
4 |
5 | public String applyCertification() {
6 | return "\t- Calibrating Brasilian rules\n\t- Applying Anatel's Stamp";
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/certificate/Certificate.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.certificate;
2 |
3 | public interface Certificate {
4 | String applyCertification();
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/certificate/USCertificate.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.certificate;
2 |
3 | public class USCertificate implements Certificate {
4 |
5 | public String applyCertification() {
6 | return "\t- Calibrating US rules";
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/iphone/IPhone.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.iphone;
2 |
3 |
4 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
5 |
6 | public abstract class IPhone {
7 | CountryRulesAbstractFactory rules;
8 |
9 | public IPhone(CountryRulesAbstractFactory rules) {
10 | this.rules = rules;
11 | }
12 |
13 | public abstract void getHardware();
14 |
15 | public void assemble() {
16 | System.out.println("Assembling all the hardwares");
17 | }
18 |
19 | public void certificates() {
20 | System.out.println("Testing all the certificates");
21 | // System.out.println(rules.getCertificates().applyCertification());
22 | }
23 |
24 | public void pack() {
25 | System.out.println("Packing the device");
26 | // System.out.println(rules.getPacking().pack());
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/iphone/IPhone11.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.iphone;
2 |
3 |
4 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
5 |
6 | public class IPhone11 extends IPhone {
7 |
8 | // padrão para ajudar na construção dos objetos
9 | public IPhone11(CountryRulesAbstractFactory rules) {
10 | super(rules);
11 | }
12 |
13 | @Override
14 | public void getHardware() {
15 | System.out.println("Hardware list");
16 | System.out.println("\t- 6.1in Screen");
17 | System.out.println("\t- A13 Chipset");
18 | System.out.println("\t- 4Gb RAM");
19 | System.out.println("\t- 256Gb Memory");
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/iphone/IPhone11Pro.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.iphone;
2 |
3 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
4 |
5 | public class IPhone11Pro extends IPhone {
6 |
7 | public IPhone11Pro(CountryRulesAbstractFactory rules) {
8 | super(rules);
9 | }
10 |
11 | @Override
12 | public void getHardware() {
13 | System.out.println("Hardware list");
14 | System.out.println("\t- 6.5in Screen");
15 | System.out.println("\t- A13 Chipset");
16 | System.out.println("\t- 4Gb RAM");
17 | System.out.println("\t- 512Gb Memory");
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/iphone/IPhoneX.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.iphone;
2 |
3 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
4 |
5 | public class IPhoneX extends IPhone {
6 |
7 | public IPhoneX(CountryRulesAbstractFactory rules) {
8 | super(rules);
9 | }
10 |
11 | @Override
12 | public void getHardware() {
13 | System.out.println("Hardware list");
14 | System.out.println("\t- 5.8in Screen");
15 | System.out.println("\t- A11 Chipset");
16 | System.out.println("\t- 3Gb RAM");
17 | System.out.println("\t- 256Gb Memory");
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/iphone/IPhoneXSMax.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.iphone;
2 |
3 | import anabneri.abstractfactory.apple.factory.abstractFactory.CountryRulesAbstractFactory;
4 |
5 | public class IPhoneXSMax extends IPhone {
6 |
7 | public IPhoneXSMax(CountryRulesAbstractFactory rules) {
8 | super(rules);
9 | }
10 |
11 | @Override
12 | public void getHardware() {
13 | System.out.println("Hardware list");
14 | System.out.println("\t- 6.5in Screen");
15 | System.out.println("\t- A12 Chipset");
16 | System.out.println("\t- 4Gb RAM");
17 | System.out.println("\t- 512Gb Memory");
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/packing/BrazilianPacking.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.packing;
2 |
3 | public class BrazilianPacking implements Packing {
4 |
5 | public String pack() {
6 | return "\t- Empacotando em Portugues";
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/packing/Packing.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.packing;
2 |
3 | public interface Packing {
4 |
5 | String pack();
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/abstractfactory/apple/model/packing/USPacking.java:
--------------------------------------------------------------------------------
1 | package anabneri.abstractfactory.apple.model.packing;
2 |
3 | public class USPacking implements Packing {
4 |
5 | public String pack() {
6 | return "\t- Packing in English";
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after;
2 |
3 |
4 | import anabneri.builder.meal.after.builder.*;
5 | import anabneri.builder.meal.after.director.MealDirector;
6 |
7 | public class Client {
8 |
9 | public static void order(String name, FastFoodMealBuilder builder) {
10 | System.out.println("Ordering a " + name);
11 | MealDirector director = new MealDirector(builder);
12 | director.constructCombo();
13 | System.out.println(director.getCombo());
14 |
15 | System.out.println("------------------");
16 | }
17 |
18 | public static void main(String[] args) {
19 | order("Burguer", new Menu1Builder());
20 | order("Veggie Burguer", new Menu2Builder());
21 | order("Just Fries", new JustFriesBuilder());
22 | order("Heart Atack", new FatMealBuilder());
23 | }
24 | }
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/builder/FastFoodMealBuilder.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.builder;
2 |
3 |
4 | import anabneri.builder.meal.after.model.FastFoodMeal;
5 |
6 | public abstract class FastFoodMealBuilder {
7 | protected FastFoodMeal meal;
8 |
9 | public FastFoodMealBuilder() {
10 | meal = new FastFoodMeal();
11 | }
12 |
13 | public FastFoodMeal getMeal() {
14 | return meal;
15 | }
16 |
17 | // definindo os metodos pra serem asbtratos por padrao
18 | // isso da a possibilidade de obter apenas o builder necessario
19 | public void buildDrink() {}
20 | public void buildMain() {}
21 | public void buildSide() {}
22 | public void buildDessert() {}
23 | public void buildGift() {}
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/builder/FatMealBuilder.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.builder;
2 |
3 | public class FatMealBuilder extends FastFoodMealBuilder {
4 | @Override
5 | public void buildDrink() {
6 | meal.setDrink("MilkShake");
7 | }
8 |
9 | @Override
10 | public void buildMain() {
11 | meal.setMain("TripleCheddarBaconBurguer");
12 | }
13 |
14 | @Override
15 | public void buildSide() {
16 | meal.setSide("Onion Rings");
17 | }
18 |
19 | @Override
20 | public void buildDessert() {
21 | meal.setDessert("Large IceCream");
22 | }
23 |
24 | @Override
25 | public void buildGift() {
26 | meal.setToy("Hospital pass");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/builder/JustFriesBuilder.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.builder;
2 |
3 | public class JustFriesBuilder extends FastFoodMealBuilder {
4 | @Override
5 | public void buildDrink() {
6 | // no drink
7 | }
8 |
9 | @Override
10 | public void buildMain() {
11 | // no main
12 | }
13 |
14 | // simplemeste setta um exemplo
15 | @Override
16 | public void buildSide() {
17 | meal.setSide("Large Fries");
18 | }
19 |
20 | // @Override
21 | // public void buildDessert() {
22 | // // no dessert
23 | // }
24 | //
25 | // @Override
26 | // public void buildGift() {
27 | // // no gift
28 | // }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/builder/Menu1Builder.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.builder;
2 |
3 | public class Menu1Builder extends FastFoodMealBuilder {
4 | @Override
5 | public void buildDrink() {
6 | meal.setDrink("Coke");
7 | }
8 |
9 | @Override
10 | public void buildMain() {
11 | meal.setMain("Cheeseburguer");
12 | }
13 |
14 | @Override
15 | public void buildSide() {
16 | meal.setSide("Fries");
17 | }
18 |
19 | @Override
20 | public void buildDessert() {
21 | meal.setDessert("Apple Pie");
22 | }
23 |
24 | @Override
25 | public void buildGift() {
26 | meal.setToy("Avenger's Toy");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/builder/Menu2Builder.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.builder;
2 |
3 | public class Menu2Builder extends FastFoodMealBuilder {
4 | @Override
5 | public void buildDrink() {
6 | meal.setDrink("Water");
7 | }
8 |
9 | @Override
10 | public void buildMain() {
11 | meal.setMain("VeggieBurguer");
12 | }
13 |
14 | @Override
15 | public void buildSide() {
16 | meal.setSide("Salad");
17 | }
18 |
19 | @Override
20 | public void buildDessert() {
21 | meal.setDessert("Apple");
22 | }
23 |
24 | @Override
25 | public void buildGift() {
26 | meal.setToy("I'm Veggie's Stamp");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/director/MealDirector.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.director;
2 |
3 |
4 | import anabneri.builder.meal.after.builder.FastFoodMealBuilder;
5 | import anabneri.builder.meal.after.model.FastFoodMeal;
6 |
7 | // this nethod have the complexity cyclomatic 3
8 | public class MealDirector {
9 |
10 | private FastFoodMealBuilder builder;
11 |
12 | public MealDirector(FastFoodMealBuilder builder) {
13 | this.builder = builder;
14 | }
15 |
16 | public void constructCombo() {
17 | builder.buildDrink();
18 | builder.buildMain();
19 | builder.buildSide();
20 | builder.buildDessert();
21 | builder.buildGift();
22 | }
23 |
24 | public FastFoodMeal getCombo() {
25 | return builder.getMeal();
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/after/model/FastFoodMeal.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.after.model;
2 |
3 | public class FastFoodMeal {
4 |
5 | private String drink;
6 | private String main;
7 | private String side;
8 | private String dessert;
9 | private String gift;
10 |
11 | public String getDrink() {
12 | return drink;
13 | }
14 |
15 | public void setDrink(String drink) {
16 | this.drink = drink;
17 | }
18 |
19 | public String getMain() {
20 | return main;
21 | }
22 |
23 | public void setMain(String main) {
24 | this.main = main;
25 | }
26 |
27 | public String getSide() {
28 | return side;
29 | }
30 |
31 | public void setSide(String side) {
32 | this.side = side;
33 | }
34 |
35 | public String getDessert() {
36 | return dessert;
37 | }
38 |
39 | public void setDessert(String dessert) {
40 | this.dessert = dessert;
41 | }
42 |
43 | public String getToy() {
44 | return gift;
45 | }
46 |
47 | public void setToy(String toy) {
48 | this.gift = toy;
49 | }
50 |
51 | @Override
52 | public String toString() {
53 | return "Combo [drink=" + drink + ", main=" + main + ", side="
54 | + side + ", dessert=" + dessert + ", gift=" + gift + "]";
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/beforeImplementation/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.beforeImplementation;
2 |
3 |
4 | import anabneri.builder.meal.beforeImplementation.model.FastFoodMeal;
5 |
6 | public class Client {
7 |
8 | public static void main(String[] args) {
9 | FastFoodMeal burguerCombo = new FastFoodMeal("Coke", "CheeseBurguer", "Fries");
10 | System.out.println(burguerCombo);
11 |
12 | FastFoodMeal justFries = new FastFoodMeal(null, null, "Fries");
13 | System.out.println(justFries);
14 |
15 | FastFoodMeal heartAtackCombo = new FastFoodMeal("Milk Shake", "Monster Burguer", "Large Fries", "Fudge Cake", "2 Kilograms");
16 | System.out.println(heartAtackCombo);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/beforeImplementation/model/FastFoodMeal.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.beforeImplementation.model;
2 |
3 | public class FastFoodMeal {
4 |
5 | private String drink;
6 | private String main;
7 | private String side;
8 | private String dessert;
9 | private String gift;
10 |
11 | //Too many constructors
12 | //It's difficult to know the order's parameters
13 |
14 | public FastFoodMeal(String drink) {
15 | this.drink = drink;
16 | }
17 |
18 | public FastFoodMeal(String drink, String main) {
19 | this.drink = drink;
20 | this.main = main;
21 | }
22 |
23 | public FastFoodMeal(String drink, String main, String side) {
24 | this.drink = drink;
25 | this.main = main;
26 | this.side = side;
27 | }
28 |
29 | public FastFoodMeal(String drink, String main, String side, String dessert) {
30 | this.drink = drink;
31 | this.main = main;
32 | this.side = side;
33 | this.dessert = dessert;
34 | }
35 |
36 | public FastFoodMeal(String drink, String main, String side, String dessert, String gift) {
37 | this.drink = drink;
38 | this.main = main;
39 | this.side = side;
40 | this.dessert = dessert;
41 | this.gift = gift;
42 | }
43 |
44 | public String getDrink() {
45 | return drink;
46 | }
47 |
48 | public void setDrink(String drink) {
49 | this.drink = drink;
50 | }
51 |
52 | public String getMain() {
53 | return main;
54 | }
55 |
56 | public void setMain(String main) {
57 | this.main = main;
58 | }
59 |
60 | public String getSide() {
61 | return side;
62 | }
63 |
64 | public void setSide(String side) {
65 | this.side = side;
66 | }
67 |
68 | public String getDessert() {
69 | return dessert;
70 | }
71 |
72 | public void setDessert(String dessert) {
73 | this.dessert = dessert;
74 | }
75 |
76 | public String getGift() {
77 | return gift;
78 | }
79 |
80 | public void setGift(String gift) {
81 | this.gift = gift;
82 | }
83 |
84 | @Override
85 | public String toString() {
86 | return "FastFoodMeal [drink=" + drink + ", main=" + main + ", side=" + side + ", dessert=" + dessert + ", gift="
87 | + gift + "]";
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/fluent/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.fluent;
2 |
3 |
4 | import anabneri.builder.meal.fluent.model.FastFoodMeal;
5 | import anabneri.builder.meal.fluent.model.builder.FastFoodMealBuilder;
6 |
7 | public class Client {
8 |
9 | public static void main(String[] args) {
10 | FastFoodMeal burguerCombo = new FastFoodMealBuilder("Fries")
11 | .andMain("CheeseBurger")
12 | .forDrink("Code")
13 | .thatsAll();
14 | System.out.println(burguerCombo);
15 |
16 | FastFoodMeal justFries = new FastFoodMealBuilder("Fries").thatsAll();
17 | System.out.println(justFries);
18 |
19 | // TODO pq nao tem o .build() no final
20 | FastFoodMeal heartAtackCombo = new FastFoodMealBuilder("Large Fries")
21 | .andMain("Monster Burguer")
22 | .forDrink("Milk Shake")
23 | .andDessert("Fudge Cake")
24 | .andGift("2 Kilograms")
25 | .thatsAll();
26 | System.out.println(heartAtackCombo);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/fluent/model/FastFoodMeal.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.fluent.model;
2 |
3 | public class FastFoodMeal {
4 |
5 | private String drink;
6 | private String main;
7 | private String side;
8 | private String dessert;
9 | private String gift;
10 |
11 | public FastFoodMeal(String drink, String main, String side, String dessert, String gift) {
12 | this.drink = drink;
13 | this.main = main;
14 | this.side = side;
15 | this.dessert = dessert;
16 | this.gift = gift;
17 | }
18 |
19 | public String getDrink() {
20 | return drink;
21 | }
22 |
23 | public void setDrink(String drink) {
24 | this.drink = drink;
25 | }
26 |
27 | public String getMain() {
28 | return main;
29 | }
30 |
31 | public void setMain(String main) {
32 | this.main = main;
33 | }
34 |
35 | public String getSide() {
36 | return side;
37 | }
38 |
39 | public void setSide(String side) {
40 | this.side = side;
41 | }
42 |
43 | public String getDessert() {
44 | return dessert;
45 | }
46 |
47 | public void setDessert(String dessert) {
48 | this.dessert = dessert;
49 | }
50 |
51 | public String getGift() {
52 | return gift;
53 | }
54 |
55 | public void setGift(String gift) {
56 | this.gift = gift;
57 | }
58 |
59 | @Override
60 | public String toString() {
61 | return "FastFoodMeal [drink=" + drink + ", main=" + main + ", side=" + side + ", dessert=" + dessert + ", gift="
62 | + gift + "]";
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/fluent/model/builder/FastFoodMealBuilder.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.fluent.model.builder;
2 |
3 |
4 | import anabneri.builder.meal.fluent.model.FastFoodMeal;
5 |
6 | public class FastFoodMealBuilder {
7 | //Mandatory
8 | private String side;
9 |
10 | //Optionals
11 | private String drink;
12 | private String main;
13 | private String dessert;
14 | private String gift;
15 |
16 | public FastFoodMealBuilder(String side) {
17 | this.side = side;
18 | }
19 |
20 | // adicionar atributos obrigatorios
21 |
22 | public FastFoodMealBuilder forDrink(String drink) {
23 | this.drink = drink;
24 | return this;
25 | }
26 |
27 | public FastFoodMealBuilder andMain(String main) {
28 | this.main = main;
29 | return this;
30 | }
31 |
32 | public FastFoodMealBuilder andDessert(String dessert) {
33 | this.dessert = dessert;
34 | return this;
35 | }
36 |
37 | public FastFoodMealBuilder andGift(String gift) {
38 | this.gift = gift;
39 | return this;
40 | }
41 |
42 | public FastFoodMeal thatsAll() {
43 | return new FastFoodMeal(drink, main, side, dessert, gift);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/functional/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.functional;
2 |
3 |
4 | import anabneri.builder.meal.functional.model.FastFoodMeal;
5 |
6 | public class Client {
7 |
8 | // sintaxe sucinta
9 | public static void main(String[] args) {
10 | FastFoodMeal burguerCombo = new FastFoodMeal.Builder("Fries")
11 | .andMain("CheeseBurger")
12 | .forDrink("Code")
13 | .thatsAll();
14 | System.out.println(burguerCombo);
15 |
16 | FastFoodMeal justFries = new FastFoodMeal.Builder("Fries").thatsAll();
17 | System.out.println(justFries);
18 |
19 | // thatAll() em projetos reais eh o mais conhecido build()
20 | FastFoodMeal heartAtackCombo = new FastFoodMeal.Builder("Large Fries")
21 | .andMain("Monster Burguer")
22 | .forDrink("Milk Shake")
23 | .andDessert("Fudge Cake")
24 | .andGift("2 Kilograms")
25 | .thatsAll();
26 | System.out.println(heartAtackCombo);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/builder/meal/functional/model/FastFoodMeal.java:
--------------------------------------------------------------------------------
1 | package anabneri.builder.meal.functional.model;
2 |
3 |
4 | public class FastFoodMeal {
5 |
6 | final private String drink;
7 | final private String main;
8 | final private String side;
9 | final private String dessert;
10 | final private String gift;
11 |
12 | public FastFoodMeal(String drink, String main, String side, String dessert, String gift) {
13 | this.drink = drink;
14 | this.main = main;
15 | this.side = side;
16 | this.dessert = dessert;
17 | this.gift = gift;
18 | }
19 |
20 | public String getDrink() {
21 | return drink;
22 | }
23 |
24 | public String getMain() {
25 | return main;
26 | }
27 |
28 | public String getSide() {
29 | return side;
30 | }
31 |
32 | public String getDessert() {
33 | return dessert;
34 | }
35 |
36 | public String getGift() {
37 | return gift;
38 | }
39 |
40 | @Override
41 | public String toString() {
42 | return "FastFoodMeal [drink=" + drink + ", main=" + main + ", side=" + side + ", dessert=" + dessert + ", gift="
43 | + gift + "]";
44 | }
45 |
46 | // inner class do paradigma funcional
47 | public static class Builder {
48 | //Mandatory
49 | private String side;
50 |
51 | //Optionals
52 | private String drink;
53 | private String main;
54 | private String dessert;
55 | private String gift;
56 |
57 | public Builder(String side) {
58 | this.side = side;
59 | }
60 |
61 | public Builder forDrink(String drink) {
62 | this.drink = drink;
63 | return this;
64 | }
65 |
66 | public Builder andMain(String main) {
67 | this.main = main;
68 | return this;
69 | }
70 |
71 | public Builder andDessert(String dessert) {
72 | this.dessert = dessert;
73 | return this;
74 | }
75 |
76 | public Builder andGift(String gift) {
77 | this.gift = gift;
78 | return this;
79 | }
80 |
81 | public FastFoodMeal thatsAll() {
82 | return new FastFoodMeal(drink, main, side, dessert, gift);
83 | }
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after;
2 |
3 |
4 | import anabneri.factory.app.dbadapter.after.db.DB;
5 | import anabneri.factory.app.dbadapter.after.factory.OracleFactory;
6 |
7 | public class Client {
8 |
9 | public static void main(String[] args) {
10 | // DB db = new PostgresFactory().getDatabase();
11 | DB db = new OracleFactory().getDatabase();
12 | db.query("SELECT * FROM users");
13 | db.update("INSERT INTO users VALUES ('User', 25)");
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/db/DB.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after.db;
2 |
3 | public interface DB {
4 | void query(String sql);
5 | void update(String sql);
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/db/OracleDB.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after.db;
2 |
3 | public class OracleDB implements DB {
4 |
5 | public void query(String sql) {
6 | System.out.println("Querying " + sql + " in Oracle database");
7 | }
8 |
9 | public void update(String sql) {
10 | System.out.println("Uptade querry " + sql + " in Oracle database");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/db/PostgresDB.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after.db;
2 |
3 | public class PostgresDB implements DB {
4 |
5 | public void query(String sql) {
6 | System.out.println("Querying " + sql + " in Postgres database");
7 | }
8 |
9 | public void update(String sql) {
10 | System.out.println("Uptade querry " + sql + " in Postgres database");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/factory/DBFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after.factory;
2 |
3 |
4 | import anabneri.factory.app.dbadapter.after.db.DB;
5 |
6 | public interface DBFactory {
7 | DB getDatabase();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/factory/OracleFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after.factory;
2 |
3 |
4 | import anabneri.factory.app.dbadapter.after.db.DB;
5 | import anabneri.factory.app.dbadapter.after.db.OracleDB;
6 |
7 | public class OracleFactory implements DBFactory {
8 |
9 | @Override
10 | public DB getDatabase() {
11 | return new OracleDB();
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/after/factory/PostgresFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.after.factory;
2 |
3 |
4 | import anabneri.factory.app.dbadapter.after.db.DB;
5 | import anabneri.factory.app.dbadapter.after.db.PostgresDB;
6 |
7 | public class PostgresFactory implements DBFactory {
8 |
9 | @Override
10 | public DB getDatabase() {
11 | return new PostgresDB();
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/beforeimplementation/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.beforeimplementation;
2 |
3 |
4 | import anabneri.factory.app.dbadapter.beforeimplementation.db.OracleDB;
5 |
6 | public class Client {
7 |
8 | public static void main(String[] args) {
9 | OracleDB db = new OracleDB();
10 | db.query("SELECT * FROM users");
11 | db.update("INSERT INTO users VALUES ('User', 25)");
12 |
13 | //What happen if you have to change for a postgres database?
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/app/dbadapter/beforeimplementation/db/OracleDB.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.app.dbadapter.beforeimplementation.db;
2 |
3 | public class OracleDB {
4 |
5 | public void query(String sql) {
6 | System.out.println("Querying " + sql + " in Oracle database");
7 | }
8 |
9 | public void update(String sql) {
10 | System.out.println("Uptade querry " + sql + " in Oracle database");
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after;
2 |
3 | import anabneri.factory.apple.after.factory.IPhone11ProFactory;
4 | import anabneri.factory.apple.after.factory.IPhoneFactory;
5 | import anabneri.factory.apple.after.factory.IPhoneXFactory;
6 | import anabneri.factory.apple.after.model.IPhone;
7 |
8 | public class Client {
9 |
10 | public static void main(String[] args) {
11 | IPhoneFactory iphoneXFactory = new IPhoneXFactory();
12 | IPhoneFactory iphone11ProFactory = new IPhone11ProFactory();
13 |
14 | System.out.println("### Ordering an iPhone X");
15 | IPhone iphone = iphoneXFactory.orderIPhone();
16 | System.out.println(iphone);
17 |
18 | System.out.println("\n\n### Ordering an iPhone 11 HighEnd");
19 | IPhone iphone2 = iphone11ProFactory.orderIPhone();
20 | System.out.println(iphone2);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/factory/IPhone11Factory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.factory;
2 |
3 |
4 | import anabneri.factory.apple.after.model.IPhone;
5 | import anabneri.factory.apple.after.model.IPhone11;
6 |
7 | public class IPhone11Factory extends IPhoneFactory {
8 |
9 | public IPhone createIPhone() {
10 | return new IPhone11();
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/factory/IPhone11ProFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.factory;
2 |
3 |
4 | import anabneri.factory.apple.after.model.IPhone;
5 | import anabneri.factory.apple.after.model.IPhone11Pro;
6 |
7 | public class IPhone11ProFactory extends IPhoneFactory {
8 |
9 | public IPhone createIPhone() {
10 | return new IPhone11Pro();
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/factory/IPhoneFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.factory;
2 |
3 |
4 | import anabneri.factory.apple.after.model.IPhone;
5 |
6 | public abstract class IPhoneFactory {
7 |
8 | public IPhone orderIPhone() {
9 | IPhone device = null;
10 |
11 | device = createIPhone();
12 |
13 | device.getHardware();
14 | device.assemble();
15 | device.certificates();
16 | device.pack();
17 |
18 | return device;
19 | }
20 |
21 | protected abstract IPhone createIPhone();
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/factory/IPhoneXFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.factory;
2 |
3 | import anabneri.factory.apple.after.model.IPhone;
4 | import anabneri.factory.apple.after.model.IPhoneX;
5 |
6 | public class IPhoneXFactory extends IPhoneFactory {
7 |
8 | public IPhone createIPhone() {
9 | return new IPhoneX();
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/factory/IPhoneXSMaxFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.factory;
2 |
3 |
4 | import anabneri.factory.apple.after.model.IPhone;
5 | import anabneri.factory.apple.after.model.IPhoneXSMax;
6 |
7 | public class IPhoneXSMaxFactory extends IPhoneFactory {
8 |
9 | public IPhone createIPhone() {
10 | return new IPhoneXSMax();
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/model/IPhone.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.model;
2 |
3 | public abstract class IPhone {
4 |
5 | public abstract void getHardware();
6 |
7 | public void assemble() {
8 | System.out.println("Assembling all the hardwares");
9 | }
10 |
11 | public void certificates() {
12 | System.out.println("Testing all the certificates");
13 | }
14 |
15 | public void pack() {
16 | System.out.println("Packing the device");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/model/IPhone11.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.model;
2 |
3 | public class IPhone11 extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.1in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/model/IPhone11Pro.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.model;
2 |
3 | public class IPhone11Pro extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/model/IPhoneX.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.model;
2 |
3 | public class IPhoneX extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 5.8in Screen");
9 | System.out.println("\t- A11 Chipset");
10 | System.out.println("\t- 3Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/after/model/IPhoneXSMax.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.after.model;
2 |
3 | public class IPhoneXSMax extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A12 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/beforeImplementation/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.beforeImplementation;
2 |
3 |
4 | import anabneri.factory.apple.beforeImplementation.model.*;
5 |
6 | public class Client {
7 |
8 | public IPhone orderIPhone(String generation, String level) {
9 | IPhone device = null;
10 |
11 | if(generation.equals("X")) {
12 | if(level.equals("standard")) {
13 | device = new IPhoneX();
14 | } else if(level.equals("highEnd")) {
15 | device = new IPhoneXSMax();
16 | }
17 | } else if(generation.equals("11")) {
18 | if(level.equals("standard")) {
19 | device = new IPhone11();
20 | } else if(level.equals("highEnd")) {
21 | device = new IPhone11Pro();
22 | }
23 | }
24 |
25 | device.getHardware();
26 | device.assemble();
27 | device.certificates();
28 | device.pack();
29 |
30 | return device;
31 | }
32 |
33 | public static void main(String[] args) {
34 | Client client = new Client();
35 |
36 | System.out.println("### Ordering an iPhone X");
37 | IPhone iphone = client.orderIPhone("X", "standard");
38 | System.out.println(iphone);
39 |
40 | System.out.println("\n\n### Ordering an iPhone 11 HighEnd");
41 | IPhone iphone2 = client.orderIPhone("11", "highEnd");
42 | System.out.println(iphone2);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/beforeImplementation/model/IPhone.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.beforeImplementation.model;
2 |
3 | public abstract class IPhone {
4 |
5 | public abstract void getHardware();
6 |
7 | public void assemble() {
8 | System.out.println("Assembling all the hardwares");
9 | }
10 |
11 | public void certificates() {
12 | System.out.println("Testing all the certificates");
13 | }
14 |
15 | public void pack() {
16 | System.out.println("Packing the device");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/beforeImplementation/model/IPhone11.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.beforeImplementation.model;
2 |
3 | public class IPhone11 extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.1in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/beforeImplementation/model/IPhone11Pro.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.beforeImplementation.model;
2 |
3 | public class IPhone11Pro extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/beforeImplementation/model/IPhoneX.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.beforeImplementation.model;
2 |
3 | public class IPhoneX extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 5.8in Screen");
9 | System.out.println("\t- A11 Chipset");
10 | System.out.println("\t- 3Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/beforeImplementation/model/IPhoneXSMax.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.beforeImplementation.model;
2 |
3 | public class IPhoneXSMax extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A12 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple;
2 |
3 | import anabneri.factory.apple.halfSimple.factory.IPhone11Factory;
4 | import anabneri.factory.apple.halfSimple.factory.IPhoneFactory;
5 | import anabneri.factory.apple.halfSimple.factory.IPhoneXFactory;
6 | import anabneri.factory.apple.halfSimple.model.IPhone;
7 |
8 | public class Client {
9 |
10 | public static void main(String[] args) {
11 | IPhoneFactory genXFactory = new IPhoneXFactory();
12 | IPhoneFactory gen11Factory = new IPhone11Factory();
13 |
14 | System.out.println("### Ordering an iPhone X");
15 | IPhone iphone = genXFactory.orderIPhone("standard");
16 | System.out.println(iphone);
17 |
18 | System.out.println("\n\n### Ordering an iPhone 11 HighEnd");
19 | IPhone iphone2 = gen11Factory.orderIPhone("highEnd");
20 | System.out.println(iphone2);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/factory/IPhone11Factory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.factory;
2 |
3 |
4 | import anabneri.factory.apple.halfSimple.model.IPhone;
5 | import anabneri.factory.apple.halfSimple.model.IPhone11;
6 | import anabneri.factory.apple.halfSimple.model.IPhone11Pro;
7 |
8 | public class IPhone11Factory extends IPhoneFactory {
9 |
10 | public IPhone createIPhone(String level) {
11 | if(level.equals("standard")) {
12 | return new IPhone11();
13 | } else if(level.equals("highEnd")) {
14 | return new IPhone11Pro();
15 | } else return null;
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/factory/IPhoneFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.factory;
2 |
3 | import anabneri.factory.apple.halfSimple.model.IPhone;
4 |
5 | public abstract class IPhoneFactory {
6 |
7 | public IPhone orderIPhone(String level) {
8 | IPhone device = null;
9 |
10 | device = createIPhone(level);
11 |
12 | device.getHardware();
13 | device.assemble();
14 | device.certificates();
15 | device.pack();
16 |
17 | return device;
18 | }
19 |
20 | protected abstract IPhone createIPhone(String level);
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/factory/IPhoneXFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.factory;
2 |
3 |
4 | import anabneri.factory.apple.halfSimple.model.IPhone;
5 | import anabneri.factory.apple.halfSimple.model.IPhoneX;
6 | import anabneri.factory.apple.halfSimple.model.IPhoneXSMax;
7 |
8 | public class IPhoneXFactory extends IPhoneFactory {
9 |
10 | public IPhone createIPhone(String level) {
11 | if(level.equals("standard")) {
12 | return new IPhoneX();
13 | } else if(level.equals("highEnd")) {
14 | return new IPhoneXSMax();
15 | } else return null;
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/model/IPhone.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.model;
2 |
3 | public abstract class IPhone {
4 |
5 | public abstract void getHardware();
6 |
7 | public void assemble() {
8 | System.out.println("Assembling all the hardwares");
9 | }
10 |
11 | public void certificates() {
12 | System.out.println("Testing all the certificates");
13 | }
14 |
15 | public void pack() {
16 | System.out.println("Packing the device");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/model/IPhone11.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.model;
2 |
3 | public class IPhone11 extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.1in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/model/IPhone11Pro.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.model;
2 |
3 | public class IPhone11Pro extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/model/IPhoneX.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.model;
2 |
3 | public class IPhoneX extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 5.8in Screen");
9 | System.out.println("\t- A11 Chipset");
10 | System.out.println("\t- 3Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/halfSimple/model/IPhoneXSMax.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.halfSimple.model;
2 |
3 | public class IPhoneXSMax extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A12 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple;
2 |
3 |
4 | import anabneri.factory.apple.simple.factory.IPhoneSimpleFactory;
5 | import anabneri.factory.apple.simple.model.IPhone;
6 |
7 | public class Client {
8 |
9 | public static void main(String[] args) {
10 | System.out.println("### Ordering an iPhone X");
11 | IPhone iphone = IPhoneSimpleFactory.orderIPhone("X", "standard");
12 | System.out.println(iphone);
13 |
14 | System.out.println("\n\n### Ordering an iPhone 11 HighEnd");
15 | IPhone iphone2 = IPhoneSimpleFactory.orderIPhone("11", "highEnd");
16 | System.out.println(iphone2);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/factory/IPhoneSimpleFactory.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple.factory;
2 |
3 |
4 | import anabneri.factory.apple.simple.model.*;
5 |
6 | public class IPhoneSimpleFactory {
7 |
8 | public static IPhone orderIPhone(String generation, String level) {
9 | IPhone device = null;
10 |
11 | if (generation.equals("X")) {
12 | if (level.equals("standard")) {
13 | device = new IPhoneX();
14 | } else if (level.equals("highEnd")) {
15 | device = new IPhoneXSMax();
16 | }
17 | } else if (generation.equals("11")) {
18 | if (level.equals("standard")) {
19 | device = new IPhone11();
20 | } else if (level.equals("highEnd")) {
21 | device = new IPhone11Pro();
22 | }
23 | }
24 |
25 | device.getHardware();
26 | device.assemble();
27 | device.certificates();
28 | device.pack();
29 |
30 | return device;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/model/IPhone.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple.model;
2 |
3 | public abstract class IPhone {
4 |
5 | public abstract void getHardware();
6 |
7 | public void assemble() {
8 | System.out.println("Assembling all the hardwares");
9 | }
10 |
11 | public void certificates() {
12 | System.out.println("Testing all the certificates");
13 | }
14 |
15 | public void pack() {
16 | System.out.println("Packing the device");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/model/IPhone11.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple.model;
2 |
3 | public class IPhone11 extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.1in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/model/IPhone11Pro.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple.model;
2 |
3 | public class IPhone11Pro extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A13 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/model/IPhoneX.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple.model;
2 |
3 | public class IPhoneX extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 5.8in Screen");
9 | System.out.println("\t- A11 Chipset");
10 | System.out.println("\t- 3Gb RAM");
11 | System.out.println("\t- 256Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/factory/apple/simple/model/IPhoneXSMax.java:
--------------------------------------------------------------------------------
1 | package anabneri.factory.apple.simple.model;
2 |
3 | public class IPhoneXSMax extends IPhone {
4 |
5 | @Override
6 | public void getHardware() {
7 | System.out.println("Hardware list");
8 | System.out.println("\t- 6.5in Screen");
9 | System.out.println("\t- A12 Chipset");
10 | System.out.println("\t- 4Gb RAM");
11 | System.out.println("\t- 512Gb Memory");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/animation/ClientAnimation.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.animation;
2 |
3 |
4 |
5 | import anabneri.prototype.animation.model.Person;
6 | import anabneri.prototype.animation.model.PersonSamples;
7 |
8 | import java.util.ArrayList;
9 | import java.util.List;
10 |
11 | public class ClientAnimation {
12 | private static List frames = new ArrayList();
13 |
14 | public static void animate() throws InterruptedException {
15 | System.out.println("*********************************");
16 | System.out.println("* ");
17 | System.out.println("* Adjust your screen's height!");
18 | System.out.println("* ");
19 | System.out.print("*********************************");
20 | Thread.sleep(3000);
21 | for(Person frame: frames) {
22 | frame.draw();
23 | Thread.sleep(500);
24 | }
25 | System.out.println("**********************");
26 | System.out.println("* ");
27 | System.out.println("* The End!");
28 | System.out.println("* ");
29 | System.out.print("**********************");
30 | }
31 |
32 | // mudo a instancia da pessoa atual, utlizando uma copia
33 | public static Person addLeft(Person p) throws CloneNotSupportedException {
34 | Person person = (Person) p.clone();
35 | person.left();
36 | frames.add(person);
37 | return person;
38 | }
39 |
40 | public static Person addRight(Person p) throws CloneNotSupportedException {
41 | Person person = (Person) p.clone();
42 | person.right();
43 | frames.add(person);
44 | return person;
45 | }
46 |
47 | public static void main(String[] args) throws CloneNotSupportedException, InterruptedException {
48 | PersonSamples samples = new PersonSamples();
49 |
50 | Person person = samples.get("stickMan");
51 | // Person person = samples.get("fatMan");
52 | frames.add(person);
53 | person = addLeft(person);
54 | person = addLeft(person);
55 | person = addLeft(person);
56 | person = addRight(person);
57 | person = addRight(person);
58 | person = addRight(person);
59 | person = addRight(person);
60 | person = addRight(person);
61 | person = addRight(person);
62 | person = addRight(person);
63 | person = addLeft(person);
64 | person = addLeft(person);
65 | person = addLeft(person);
66 | animate();
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/animation/model/Person.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.animation.model;
2 |
3 | // clonable eh uma interface no Java que diz que a classe implementada eh colanvel ou nao
4 | public class Person implements Cloneable {
5 | String line1;
6 | String line2;
7 | String line3;
8 | String line4;
9 |
10 |
11 |
12 | public Person(String line1, String line2, String line3, String line4) {
13 | this.line1 = line1;
14 | this.line2 = line2;
15 | this.line3 = line3;
16 | this.line4 = line4;
17 | }
18 |
19 | // funcao que desenha a person
20 | public void draw() {
21 | System.out.println("");
22 | System.out.println(line1);
23 | System.out.println(line2);
24 | System.out.println(line3);
25 | System.out.println(line4);
26 | }
27 |
28 | // para a animacao ir pro aldo esquerdo, pego so primeiro ate o ultimo caractere, e remove o caractere de indice 0 com a subsstring()
29 | public void left() {
30 | line1 = line1.substring(1);
31 | line2 = line2.substring(1);
32 | line3 = line3.substring(1);
33 | line4 = line4.substring(1);
34 | }
35 |
36 |
37 | public void right() {
38 | line1 = " " + line1;
39 | line2 = " " + line2;
40 | line3 = " " + line3;
41 | line4 = "_" + line4;
42 | }
43 |
44 | // esse metodo me possiblita em nao clonar cada um desses objetos
45 | @Override
46 | public Object clone() throws CloneNotSupportedException {
47 | // clone unificado:
48 | // Person clone = new Person(line1, line2, line3, line4);
49 | return super.clone();
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/animation/model/PersonSamples.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.animation.model;
2 |
3 | import java.util.HashMap;
4 | import java.util.Map;
5 |
6 | public class PersonSamples {
7 | private Map samples;
8 |
9 | public PersonSamples() {
10 | samples = new HashMap<>();
11 | loadSamples();
12 | }
13 |
14 | public Person get(String type) {
15 | return samples.get(type);
16 | }
17 |
18 | private void loadSamples() {
19 | samples.put("stickMan", new Person(
20 | " ",
21 | " o ",
22 | " /|\\ ",
23 | "_______/_\\___________"
24 | ));
25 | samples.put("fatMan", new Person(
26 | " ",
27 | " (^ ^) ",
28 | " <) )\\ ",
29 | "_______/__\\___________"
30 | ));
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/deepShallow/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.deepShallow;
2 |
3 |
4 | import anabneri.prototype.deepShallow.model.Address;
5 | import anabneri.prototype.deepShallow.model.User;
6 |
7 | public class Client {
8 |
9 | public static void main(String[] args) throws CloneNotSupportedException {
10 | User user = new User("Clone", 25, new Address("ABC Street", 1000));
11 | System.out.println(user);
12 |
13 | User cloneUser = user.clone();
14 | cloneUser.name = "Clone x2";
15 |
16 | // cria um outro endereco junto com usuario
17 | cloneUser.address.street = "Double Street";
18 | System.out.println(user);
19 | System.out.println(cloneUser);
20 | }
21 | }
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/deepShallow/model/Address.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.deepShallow.model;
2 |
3 | public class Address implements Cloneable {
4 | public String street;
5 | public Integer number;
6 |
7 | public Address(String street, Integer number) {
8 | super();
9 | this.street = street;
10 | this.number = number;
11 | }
12 |
13 | @Override
14 | public String toString() {
15 | return "Address [street=" + street + ", number=" + number + "]";
16 | }
17 |
18 | @Override
19 | public Object clone() throws CloneNotSupportedException {
20 | return super.clone();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/deepShallow/model/User.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.deepShallow.model;
2 |
3 | public class User implements Cloneable {
4 | public String name;
5 | public Integer age;
6 | public Address address;
7 |
8 | public User(String name, Integer age, Address address) {
9 | super();
10 | this.name = name;
11 | this.age = age;
12 | this.address = address;
13 | }
14 |
15 | @Override
16 | public String toString() {
17 | return "User [name=" + name + ", age=" + age + ", address=" + address + "]";
18 | }
19 |
20 | @Override
21 | public User clone() throws CloneNotSupportedException {
22 | //Error
23 | // return (User) super.clone();
24 |
25 | //Solution
26 | User cloneUser = (User) super.clone();
27 | cloneUser.address = (Address) cloneUser.address.clone();
28 | return cloneUser;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/functionalCloneBuilder/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.functionalCloneBuilder;
2 |
3 |
4 | import anabneri.prototype.functionalCloneBuilder.model.Address;
5 | import anabneri.prototype.functionalCloneBuilder.model.User;
6 |
7 | // ideia de trabalhar com objetos imultaveis
8 | // prtotype - clone e builder - constroi a partir de um clone de um obj
9 | public class Client {
10 |
11 | public static void main(String[] args) throws CloneNotSupportedException {
12 | User user = new User("ToClone", 25, new Address("ABC Street", 1000));
13 | System.out.println(user);
14 |
15 | User cloneUser = user.cloneBuilder().withName("Cloned++").now();
16 | System.out.println(cloneUser);
17 |
18 | User anotherUser = cloneUser.cloneBuilder()
19 | .withAge(100)
20 | .withAddress(new Address("A Street", 500))
21 | .now();
22 | System.out.println(anotherUser);
23 | }
24 | }
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/functionalCloneBuilder/model/Address.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.functionalCloneBuilder.model;
2 |
3 | public class Address implements Cloneable {
4 | private final String street;
5 | private final Integer number;
6 |
7 | public Address(String street, Integer number) {
8 | super();
9 | this.street = street;
10 | this.number = number;
11 | }
12 |
13 | public String getStreet() {
14 | return street;
15 | }
16 |
17 | public Integer getNumber() {
18 | return number;
19 | }
20 |
21 | @Override
22 | public String toString() {
23 | return "Address [street=" + street + ", number=" + number + "]";
24 | }
25 |
26 | @Override
27 | protected Object clone() throws CloneNotSupportedException {
28 | return super.clone();
29 | }
30 |
31 | public static class Builder {
32 | private String street;
33 | private Integer number;
34 |
35 | private Builder(String street, Integer number) {
36 | this.street = street;
37 | this.number = number;
38 | }
39 |
40 | public Builder withStreet(String street) {
41 | this.street = street;
42 | return this;
43 | }
44 |
45 | public Builder withNumber(Integer number) {
46 | this.number = number;
47 | return this;
48 | }
49 |
50 | public Address now() {
51 | return new Address(street, number);
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/prototype/functionalCloneBuilder/model/User.java:
--------------------------------------------------------------------------------
1 | package anabneri.prototype.functionalCloneBuilder.model;
2 |
3 | public class User implements Cloneable {
4 | private final String name;
5 | private final Integer age;
6 | private final Address address;
7 |
8 | public User(String name, Integer age, Address address) {
9 | super();
10 | this.name = name;
11 | this.age = age;
12 | this.address = address;
13 | }
14 |
15 | public String getName() {
16 | return name;
17 | }
18 |
19 | public Integer getAge() {
20 | return age;
21 | }
22 |
23 | public Address getAddress() {
24 | return address;
25 | }
26 |
27 | @Override
28 | public String toString() {
29 | return "User [name=" + name + ", age=" + age + ", address=" + address + "]";
30 | }
31 |
32 | @Override
33 | protected User clone() throws CloneNotSupportedException {
34 | Address cloneAddress = (Address) address.clone();
35 | return new User(name, age, cloneAddress);
36 | }
37 |
38 | // clone o objeto passando o builder nos atributos
39 | public Builder cloneBuilder() {
40 | return new Builder(name, age, address);
41 | }
42 |
43 | public static class Builder {
44 | private String name;
45 | private Integer age;
46 | private Address address;
47 |
48 | private Builder(String name, Integer age, Address address) {
49 | this.name = name;
50 | this.age = age;
51 | this.address = address;
52 | }
53 |
54 | public Builder withName(String name) {
55 | this.name = name;
56 | return this;
57 | }
58 |
59 | public Builder withAge(Integer age) {
60 | this.age = age;
61 | return this;
62 | }
63 |
64 | public Builder withAddress(Address address) {
65 | this.address = address;
66 | return this;
67 | }
68 |
69 | public User now() {
70 | return new User(name, age, address);
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/after/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.after;
2 |
3 |
4 | import anabneri.singleton.connectionPool.after.conn.Connection;
5 | import anabneri.singleton.connectionPool.after.conn.ConnectionPool;
6 |
7 | public class Client {
8 | public static void doQuery1() {
9 | ConnectionPool pool = ConnectionPool.getInstance();
10 | Connection conn = pool.getConnection();
11 | if(conn != null)
12 | conn.query("SELECT * FROM A1");
13 | }
14 |
15 | public static void doQuery2() {
16 | ConnectionPool pool = ConnectionPool.getInstance();
17 | Connection conn = pool.getConnection();
18 | if(conn != null)
19 | conn.query("SELECT * FROM A2");
20 |
21 | // access conection inside the class
22 | pool.leaveConnection(conn);
23 | }
24 |
25 | public static void doQuery3() {
26 | ConnectionPool pool = ConnectionPool.getInstance();
27 | Connection conn = pool.getConnection();
28 | if(conn != null)
29 | conn.query("SELECT * FROM A3");
30 | }
31 |
32 | public static void main(String[] args) throws InterruptedException {
33 | System.out.println("Connection Pool Size: " + ConnectionPool.POOL_SIZE);
34 | int pool = ConnectionPool.POOL_SIZE;
35 | System.out.println(pool);
36 | doQuery1();
37 | doQuery2();
38 | doQuery3();
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/after/conn/Connection.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.after.conn;
2 |
3 | public class Connection {
4 | private boolean inUse;
5 |
6 | // access inside the class
7 | public Connection() {
8 | inUse = false;
9 | }
10 |
11 | public Object query(String sql) {
12 | System.out.println("Running '" + sql + "' in Connection " + this);
13 | return null;
14 | }
15 |
16 | boolean isInUse() {
17 | return inUse;
18 | }
19 |
20 | void setInUse(boolean status) {
21 | inUse = status;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/after/conn/ConnectionPool.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.after.conn;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class ConnectionPool {
7 | private static ConnectionPool singleton = new ConnectionPool();
8 | public final static int POOL_SIZE = 2;
9 | private List connectionsPool;
10 |
11 | public static ConnectionPool getInstance() {
12 | return singleton;
13 | }
14 |
15 | private ConnectionPool() {
16 | System.out.println("Creating Connection Pool");
17 | connectionsPool = new ArrayList();
18 | for(int i = 0; i < POOL_SIZE; i++) {
19 | connectionsPool.add(new Connection());
20 | }
21 | }
22 |
23 | public Connection getConnection() {
24 | Connection avaiable = null;
25 | for(Connection conn: connectionsPool) {
26 | if(!conn.isInUse()) {
27 | avaiable = conn;
28 | break;
29 | }
30 | }
31 | if(avaiable == null) {
32 | System.out.println("No Connections avaiable");
33 | return null;
34 | }
35 | avaiable.setInUse(true);
36 | return avaiable;
37 | }
38 |
39 | public void leaveConnection(Connection conn) {
40 | conn.setInUse(false);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/beforeImplementation/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.beforeImplementation;
2 |
3 |
4 | import anabneri.singleton.connectionPool.beforeImplementation.conn.Connection;
5 | import anabneri.singleton.connectionPool.beforeImplementation.conn.ConnectionPool;
6 |
7 | public class Client {
8 | public static void doQuery1() {
9 | ConnectionPool pool = new ConnectionPool();
10 | Connection conn = pool.getConnection();
11 | if(conn != null)
12 | conn.query("SELECT * FROM A1");
13 | }
14 |
15 | public static void doQuery2() {
16 | ConnectionPool pool = new ConnectionPool();
17 | Connection conn = pool.getConnection();
18 | if(conn != null)
19 | conn.query("SELECT * FROM A2");
20 | }
21 |
22 | public static void doQuery3() {
23 | ConnectionPool pool = new ConnectionPool();
24 | Connection conn = pool.getConnection();
25 | if(conn != null)
26 | conn.query("SELECT * FROM A3");
27 | }
28 |
29 | public static void main(String[] args) {
30 | doQuery1();
31 | doQuery2();
32 | doQuery3();
33 |
34 | //3 connections was made, even with 2 connections limit
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/beforeImplementation/conn/Connection.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.beforeImplementation.conn;
2 |
3 | public class Connection {
4 | private boolean inUse;
5 |
6 | public Connection() {
7 | inUse = false;
8 | }
9 |
10 | public Object query(String sql) {
11 | System.out.println("Running '" + sql + "' in Connection " + this);
12 | return null;
13 | }
14 |
15 | boolean isInUse() {
16 | return inUse;
17 | }
18 |
19 | void setInUse(boolean status) {
20 | inUse = status;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/beforeImplementation/conn/ConnectionPool.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.beforeImplementation.conn;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class ConnectionPool {
7 | private final static int POOL_SIZE = 2;
8 | private List connectionsPool;
9 |
10 | // its impossibile toacces outside the class
11 | public ConnectionPool() {
12 | System.out.println("Creating Connection Pool");
13 | connectionsPool = new ArrayList();
14 | for(int i = 0; i < POOL_SIZE; i++) {
15 | connectionsPool.add(new Connection());
16 | }
17 | }
18 |
19 | // complexidade ciclomatica desse metodo esta em 8
20 | public Connection getConnection() {
21 | Connection avaiable = null;
22 | for(Connection conn: connectionsPool) {
23 | if(!conn.isInUse()) {
24 | avaiable = conn;
25 | break;
26 | }
27 | }
28 | if(avaiable == null) {
29 | System.out.println("No Connections avaiable");
30 | return null;
31 | }
32 | avaiable.setInUse(true);
33 | return avaiable;
34 | }
35 |
36 | public void leaveConnection(Connection conn) {
37 | conn.setInUse(false);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/monostate/Client.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.monostate;
2 |
3 |
4 | import anabneri.singleton.connectionPool.monostate.conn.Connection;
5 | import anabneri.singleton.connectionPool.monostate.conn.ConnectionPool;
6 |
7 | public class Client {
8 | public static void doQuery1() {
9 | ConnectionPool pool = new ConnectionPool();
10 | Connection conn = pool.getConnection();
11 | if(conn != null)
12 | conn.query("SELECT * FROM A1");
13 | }
14 |
15 | public static void doQuery2() {
16 | ConnectionPool pool = new ConnectionPool();
17 | Connection conn = pool.getConnection();
18 | if(conn != null)
19 | conn.query("SELECT * FROM A2");
20 | }
21 |
22 | public static void doQuery3() {
23 | ConnectionPool pool = new ConnectionPool();
24 | Connection conn = pool.getConnection();
25 | if(conn != null)
26 | conn.query("SELECT * FROM A3");
27 | }
28 |
29 | public static void main(String[] args) throws InterruptedException {
30 | System.out.println("Connection Pool Size: " + ConnectionPool.POOL_SIZE);
31 | int pool = ConnectionPool.POOL_SIZE;
32 | System.out.println(pool);
33 | doQuery1();
34 | doQuery2();
35 | doQuery3();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/monostate/conn/Connection.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.monostate.conn;
2 |
3 | public class Connection {
4 | private boolean inUse;
5 |
6 | public Connection() {
7 | inUse = false;
8 | }
9 |
10 | public Object query(String sql) {
11 | System.out.println("Running '" + sql + "' in Connection " + this);
12 | return null;
13 | }
14 |
15 | boolean isInUse() {
16 | return inUse;
17 | }
18 |
19 | void setInUse(boolean status) {
20 | inUse = status;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/anabneri/singleton/connectionPool/monostate/conn/ConnectionPool.java:
--------------------------------------------------------------------------------
1 | package anabneri.singleton.connectionPool.monostate.conn;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class ConnectionPool {
7 | public final static int POOL_SIZE = 2;
8 | private static List connectionsPool;
9 |
10 | static {
11 | System.out.println("Creating Connection Pool");
12 | connectionsPool = new ArrayList();
13 | for(int i = 0; i < POOL_SIZE; i++) {
14 | connectionsPool.add(new Connection());
15 | }
16 | }
17 |
18 | public ConnectionPool() {
19 | System.out.println("New instance of Connection Pool");
20 | }
21 |
22 | public Connection getConnection() {
23 | Connection avaiable = null;
24 | for(Connection conn: connectionsPool) {
25 | if(!conn.isInUse()) {
26 | avaiable = conn;
27 | break;
28 | }
29 | }
30 | if(avaiable == null) {
31 | System.out.println("No Connections avaiable");
32 | return null;
33 | }
34 | avaiable.setInUse(true);
35 | return avaiable;
36 | }
37 |
38 | public void leaveConnection(Connection conn) {
39 | conn.setInUse(false);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/test/java/anabneri/AppTest.java:
--------------------------------------------------------------------------------
1 | package anabneri;
2 |
3 | import static org.junit.Assert.assertTrue;
4 |
5 | import org.junit.Test;
6 |
7 | /**
8 | * Unit test for simple App.
9 | */
10 | public class AppTest
11 | {
12 | /**
13 | * Rigorous Test :-)
14 | */
15 | @Test
16 | public void shouldAnswerWithTrue()
17 | {
18 | assertTrue( true );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/factory/EJBAbstractFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/factory/EJBAbstractFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/factory/RestAbstractFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/factory/RestAbstractFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/factory/ServicesAbstractFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/factory/ServicesAbstractFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/services/CarEJBService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/services/CarEJBService.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/services/CarRestApiService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/services/CarRestApiService.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/services/CarService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/services/CarService.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/services/UserEJBService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/services/UserEJBService.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/services/UserRestApiService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/services/UserRestApiService.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/app/service/services/UserService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/app/service/services/UserService.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/factory/IPhone11Factory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/factory/IPhone11Factory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/factory/IPhoneFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/factory/IPhoneFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/factory/IPhoneXFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/factory/IPhoneXFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/factory/abstractFactory/BrazilianRulesAbstractFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/factory/abstractFactory/BrazilianRulesAbstractFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/factory/abstractFactory/CountryRulesAbstractFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/factory/abstractFactory/CountryRulesAbstractFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/factory/abstractFactory/USRulesAbstractFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/factory/abstractFactory/USRulesAbstractFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/certificate/BrazilianCertificate.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/certificate/BrazilianCertificate.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/certificate/Certificate.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/certificate/Certificate.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/certificate/USCertificate.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/certificate/USCertificate.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhone.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhone.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhone11.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhone11.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhone11Pro.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhone11Pro.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhoneX.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhoneX.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhoneXSMax.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/iphone/IPhoneXSMax.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/packing/BrazilianPacking.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/packing/BrazilianPacking.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/packing/Packing.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/packing/Packing.class
--------------------------------------------------------------------------------
/target/classes/anabneri/abstractfactory/apple/model/packing/USPacking.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/abstractfactory/apple/model/packing/USPacking.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/builder/FastFoodMealBuilder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/builder/FastFoodMealBuilder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/builder/FatMealBuilder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/builder/FatMealBuilder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/builder/JustFriesBuilder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/builder/JustFriesBuilder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/builder/Menu1Builder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/builder/Menu1Builder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/builder/Menu2Builder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/builder/Menu2Builder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/director/MealDirector.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/director/MealDirector.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/after/model/FastFoodMeal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/after/model/FastFoodMeal.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/beforeImplementation/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/beforeImplementation/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/beforeImplementation/model/FastFoodMeal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/beforeImplementation/model/FastFoodMeal.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/fluent/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/fluent/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/fluent/model/FastFoodMeal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/fluent/model/FastFoodMeal.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/fluent/model/builder/FastFoodMealBuilder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/fluent/model/builder/FastFoodMealBuilder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/functional/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/functional/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/functional/model/FastFoodMeal$Builder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/functional/model/FastFoodMeal$Builder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/builder/meal/functional/model/FastFoodMeal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/builder/meal/functional/model/FastFoodMeal.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/db/DB.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/db/DB.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/db/OracleDB.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/db/OracleDB.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/db/PostgresDB.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/db/PostgresDB.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/factory/DBFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/factory/DBFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/factory/OracleFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/factory/OracleFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/after/factory/PostgresFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/after/factory/PostgresFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/beforeimplementation/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/beforeimplementation/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/app/dbadapter/beforeimplementation/db/OracleDB.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/app/dbadapter/beforeimplementation/db/OracleDB.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/factory/IPhone11Factory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/factory/IPhone11Factory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/factory/IPhone11ProFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/factory/IPhone11ProFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/factory/IPhoneFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/factory/IPhoneFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/factory/IPhoneXFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/factory/IPhoneXFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/factory/IPhoneXSMaxFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/factory/IPhoneXSMaxFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/model/IPhone.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/model/IPhone.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/model/IPhone11.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/model/IPhone11.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/model/IPhone11Pro.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/model/IPhone11Pro.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/model/IPhoneX.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/model/IPhoneX.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/after/model/IPhoneXSMax.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/after/model/IPhoneXSMax.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/beforeImplementation/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/beforeImplementation/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhone.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhone.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhone11.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhone11.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhone11Pro.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhone11Pro.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhoneX.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhoneX.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhoneXSMax.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/beforeImplementation/model/IPhoneXSMax.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/factory/IPhone11Factory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/factory/IPhone11Factory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/factory/IPhoneFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/factory/IPhoneFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/factory/IPhoneXFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/factory/IPhoneXFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/model/IPhone.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/model/IPhone.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/model/IPhone11.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/model/IPhone11.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/model/IPhone11Pro.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/model/IPhone11Pro.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/model/IPhoneX.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/model/IPhoneX.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/halfSimple/model/IPhoneXSMax.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/halfSimple/model/IPhoneXSMax.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/factory/IPhoneSimpleFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/factory/IPhoneSimpleFactory.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/model/IPhone.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/model/IPhone.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/model/IPhone11.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/model/IPhone11.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/model/IPhone11Pro.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/model/IPhone11Pro.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/model/IPhoneX.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/model/IPhoneX.class
--------------------------------------------------------------------------------
/target/classes/anabneri/factory/apple/simple/model/IPhoneXSMax.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/factory/apple/simple/model/IPhoneXSMax.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/animation/ClientAnimation.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/animation/ClientAnimation.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/animation/model/Person.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/animation/model/Person.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/animation/model/PersonSamples.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/animation/model/PersonSamples.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/deepShallow/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/deepShallow/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/deepShallow/model/Address.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/deepShallow/model/Address.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/deepShallow/model/User.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/deepShallow/model/User.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/functionalCloneBuilder/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/functionalCloneBuilder/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/functionalCloneBuilder/model/Address$Builder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/functionalCloneBuilder/model/Address$Builder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/functionalCloneBuilder/model/Address.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/functionalCloneBuilder/model/Address.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/functionalCloneBuilder/model/User$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/functionalCloneBuilder/model/User$1.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/functionalCloneBuilder/model/User$Builder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/functionalCloneBuilder/model/User$Builder.class
--------------------------------------------------------------------------------
/target/classes/anabneri/prototype/functionalCloneBuilder/model/User.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/prototype/functionalCloneBuilder/model/User.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/after/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/after/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/after/conn/Connection.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/after/conn/Connection.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/after/conn/ConnectionPool.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/after/conn/ConnectionPool.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/beforeImplementation/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/beforeImplementation/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/beforeImplementation/conn/Connection.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/beforeImplementation/conn/Connection.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/beforeImplementation/conn/ConnectionPool.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/beforeImplementation/conn/ConnectionPool.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/monostate/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/monostate/Client.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/monostate/conn/Connection.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/monostate/conn/Connection.class
--------------------------------------------------------------------------------
/target/classes/anabneri/singleton/connectionPool/monostate/conn/ConnectionPool.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/classes/anabneri/singleton/connectionPool/monostate/conn/ConnectionPool.class
--------------------------------------------------------------------------------
/target/test-classes/anabneri/AppTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ananeridev/creational-patterns-project/01e961b60dcd67e473390ba4253f8dd9c61f823c/target/test-classes/anabneri/AppTest.class
--------------------------------------------------------------------------------