├── .gitignore ├── README.md ├── pom.xml └── src └── main └── java └── com └── techtong └── solid ├── dip ├── refactored │ ├── Main.java │ ├── models │ │ ├── Customer.java │ │ └── ShoppingCart.java │ └── services │ │ ├── NewCheckoutService.java │ │ ├── NewSmsService.java │ │ └── sms │ │ ├── GpSmsProvider.java │ │ ├── RobiSmsProvider.java │ │ └── SmsProvider.java └── violation │ ├── Main.java │ ├── models │ ├── Customer.java │ └── ShoppingCart.java │ └── services │ ├── CheckoutService.java │ └── SmsService.java ├── isp ├── refactored │ ├── Main.java │ └── account │ │ ├── BaseAccount.java │ │ ├── InternationalAmountTransferable.java │ │ ├── RemittanceSavingsAccount.java │ │ ├── SavingsAccount.java │ │ └── StudentAccount.java └── violation │ ├── Main.java │ └── account │ ├── RemittanceSavingsAccount.java │ ├── SavingsAccount.java │ └── StudentAccount.java ├── lsp ├── refactored │ ├── Main.java │ └── model │ │ ├── ContractEmployee.java │ │ ├── Employee.java │ │ ├── EmployeeBonusEligible.java │ │ ├── IEmployee.java │ │ ├── PermanentEmployee.java │ │ └── TemporaryEmployee.java └── violation │ ├── Main.java │ └── model │ ├── ContractEmployee.java │ ├── Employee.java │ ├── PermanentEmployee.java │ └── TemporaryEmployee.java ├── ocp ├── OCP.java ├── refactored │ ├── DecentKitchenService.java │ ├── FoodPreparer.java │ └── models │ │ ├── BakedFood.java │ │ ├── FoodItem.java │ │ ├── FriedFood.java │ │ ├── GrilledFood.java │ │ └── SauteedFood.java └── violation │ ├── BadKitchenService.java │ └── models │ ├── FoodItem.java │ ├── FriedFood.java │ └── GrilledFood.java └── srp ├── refactored ├── Customer.java ├── Item.java ├── Main.java ├── logger │ ├── ConsoleLogger.java │ ├── FileLogger.java │ └── Logger.java └── pricecalculation │ ├── ItemPriceCalculationService.java │ └── TaxCalculationService.java └── violation ├── Customer.java ├── Item.java └── Main.java /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/README.md -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/pom.xml -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/models/Customer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/models/Customer.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/models/ShoppingCart.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/models/ShoppingCart.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/services/NewCheckoutService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/services/NewCheckoutService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/services/NewSmsService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/services/NewSmsService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/services/sms/GpSmsProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/services/sms/GpSmsProvider.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/services/sms/RobiSmsProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/services/sms/RobiSmsProvider.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/refactored/services/sms/SmsProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/refactored/services/sms/SmsProvider.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/violation/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/violation/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/violation/models/Customer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/violation/models/Customer.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/violation/models/ShoppingCart.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/violation/models/ShoppingCart.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/violation/services/CheckoutService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/violation/services/CheckoutService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/dip/violation/services/SmsService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/dip/violation/services/SmsService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/refactored/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/refactored/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/refactored/account/BaseAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/refactored/account/BaseAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/refactored/account/InternationalAmountTransferable.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/refactored/account/InternationalAmountTransferable.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/refactored/account/RemittanceSavingsAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/refactored/account/RemittanceSavingsAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/refactored/account/SavingsAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/refactored/account/SavingsAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/refactored/account/StudentAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/refactored/account/StudentAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/violation/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/violation/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/violation/account/RemittanceSavingsAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/violation/account/RemittanceSavingsAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/violation/account/SavingsAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/violation/account/SavingsAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/isp/violation/account/StudentAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/isp/violation/account/StudentAccount.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/model/ContractEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/model/ContractEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/model/Employee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/model/Employee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/model/EmployeeBonusEligible.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/model/EmployeeBonusEligible.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/model/IEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/model/IEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/model/PermanentEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/model/PermanentEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/refactored/model/TemporaryEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/refactored/model/TemporaryEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/violation/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/violation/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/violation/model/ContractEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/violation/model/ContractEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/violation/model/Employee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/violation/model/Employee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/violation/model/PermanentEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/violation/model/PermanentEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/lsp/violation/model/TemporaryEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/lsp/violation/model/TemporaryEmployee.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/OCP.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/OCP.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/DecentKitchenService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/DecentKitchenService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/FoodPreparer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/FoodPreparer.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/models/BakedFood.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/models/BakedFood.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/models/FoodItem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/models/FoodItem.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/models/FriedFood.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/models/FriedFood.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/models/GrilledFood.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/models/GrilledFood.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/refactored/models/SauteedFood.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/refactored/models/SauteedFood.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/violation/BadKitchenService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/violation/BadKitchenService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/violation/models/FoodItem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/violation/models/FoodItem.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/violation/models/FriedFood.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/violation/models/FriedFood.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/ocp/violation/models/GrilledFood.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/ocp/violation/models/GrilledFood.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/Customer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/Customer.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/Item.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/Item.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/Main.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/logger/ConsoleLogger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/logger/ConsoleLogger.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/logger/FileLogger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/logger/FileLogger.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/logger/Logger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/logger/Logger.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/pricecalculation/ItemPriceCalculationService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/pricecalculation/ItemPriceCalculationService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/refactored/pricecalculation/TaxCalculationService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/refactored/pricecalculation/TaxCalculationService.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/violation/Customer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/violation/Customer.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/violation/Item.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/violation/Item.java -------------------------------------------------------------------------------- /src/main/java/com/techtong/solid/srp/violation/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tech-tong/solid-principles/HEAD/src/main/java/com/techtong/solid/srp/violation/Main.java --------------------------------------------------------------------------------