├── .gitignore ├── LICENSE ├── README.md ├── behavioral ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── siriusxi │ └── dp │ └── behav │ ├── observer │ ├── Message.java │ ├── Observer.java │ ├── Subject.java │ ├── WeatherStation.java │ ├── WeatherStationSimulator.java │ └── concrete │ │ ├── Alert.java │ │ ├── BusinessApp.java │ │ ├── Logger.java │ │ └── UserInterface.java │ └── strategy │ ├── Fighter.java │ ├── StreetFightersSimulator.java │ ├── algorithms │ ├── jump │ │ ├── HighJump.java │ │ ├── JumpBehavior.java │ │ ├── NoJump.java │ │ └── NormalJump.java │ ├── kick │ │ ├── KickBehavior.java │ │ ├── NormalKick.java │ │ └── TornadoKick.java │ └── roll │ │ ├── NoRoll.java │ │ ├── NormalRoll.java │ │ └── RollBehavior.java │ └── fighters │ ├── ChunLi.java │ ├── EHonda.java │ ├── Ken.java │ └── Ryu.java ├── pom.xml ├── principles ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── siriusxi │ └── principle │ └── coupling │ ├── RemoteSimulator.java │ ├── loose │ ├── Device.java │ ├── LCRemote.java │ ├── LCTelevision.java │ └── Radio.java │ └── tight │ ├── Remote.java │ └── Television.java └── structural ├── pom.xml └── src └── main └── java └── com └── siriusxi └── dp └── structural ├── adapter ├── AmericanCity.java ├── CelsiusToFahrenheitCityAdapter.java ├── City.java ├── MiddleEastCity.java ├── WeatherFeeder.java └── WeatherStation.java └── decorator ├── CondimentDecorator.java ├── Drink.java ├── FuzzBuzzCoffeeShop.java ├── component ├── DarkRoast.java ├── Decaf.java ├── Espresso.java └── HouseBlend.java └── condiment ├── Milk.java ├── Mocha.java ├── Sprinkles.java └── Whip.java /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/README.md -------------------------------------------------------------------------------- /behavioral/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/pom.xml -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/Message.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/Message.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/Observer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/Observer.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/Subject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/Subject.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/WeatherStation.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/WeatherStation.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/WeatherStationSimulator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/WeatherStationSimulator.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/Alert.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/Alert.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/BusinessApp.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/BusinessApp.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/Logger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/Logger.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/UserInterface.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/observer/concrete/UserInterface.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/Fighter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/Fighter.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/StreetFightersSimulator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/StreetFightersSimulator.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/HighJump.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/HighJump.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/JumpBehavior.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/JumpBehavior.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/NoJump.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/NoJump.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/NormalJump.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/jump/NormalJump.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/kick/KickBehavior.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/kick/KickBehavior.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/kick/NormalKick.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/kick/NormalKick.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/kick/TornadoKick.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/kick/TornadoKick.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/roll/NoRoll.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/roll/NoRoll.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/roll/NormalRoll.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/roll/NormalRoll.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/roll/RollBehavior.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/algorithms/roll/RollBehavior.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/ChunLi.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/ChunLi.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/EHonda.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/EHonda.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/Ken.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/Ken.java -------------------------------------------------------------------------------- /behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/Ryu.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/behavioral/src/main/java/com/siriusxi/dp/behav/strategy/fighters/Ryu.java -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/pom.xml -------------------------------------------------------------------------------- /principles/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/pom.xml -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/RemoteSimulator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/RemoteSimulator.java -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/loose/Device.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/loose/Device.java -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/loose/LCRemote.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/loose/LCRemote.java -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/loose/LCTelevision.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/loose/LCTelevision.java -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/loose/Radio.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/loose/Radio.java -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/tight/Remote.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/tight/Remote.java -------------------------------------------------------------------------------- /principles/src/main/java/com/siriusxi/principle/coupling/tight/Television.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/principles/src/main/java/com/siriusxi/principle/coupling/tight/Television.java -------------------------------------------------------------------------------- /structural/pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/pom.xml -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/adapter/AmericanCity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/adapter/AmericanCity.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/adapter/CelsiusToFahrenheitCityAdapter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/adapter/CelsiusToFahrenheitCityAdapter.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/adapter/City.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/adapter/City.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/adapter/MiddleEastCity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/adapter/MiddleEastCity.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/adapter/WeatherFeeder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/adapter/WeatherFeeder.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/adapter/WeatherStation.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/adapter/WeatherStation.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/CondimentDecorator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/CondimentDecorator.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/Drink.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/Drink.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/FuzzBuzzCoffeeShop.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/FuzzBuzzCoffeeShop.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/component/DarkRoast.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/component/DarkRoast.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/component/Decaf.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/component/Decaf.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/component/Espresso.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/component/Espresso.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/component/HouseBlend.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/component/HouseBlend.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Milk.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Milk.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Mocha.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Mocha.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Sprinkles.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Sprinkles.java -------------------------------------------------------------------------------- /structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Whip.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohamed-taman/Design-Patterns/HEAD/structural/src/main/java/com/siriusxi/dp/structural/decorator/condiment/Whip.java --------------------------------------------------------------------------------