This repository contains Java-based examples from the Software Modeling and Design course, illustrating key design patterns and software design principles. The repository is structured into weekly labs, each focusing on different design principles and best practices.
- Composition vs Inheritance (
Example01BeforeComposition
,Example01AfterComposition
) - Single Responsibility Principle (SRP) (
Example02ViolationOfSingleResponsibility
,Example02SolutionUsingSingleResponsibility
) - Inversion of Control (IoC) and Dependency Injection (DI) (
Example03BeforeIoC
,Example03AfterIoC
) - Filter Pattern (
Example04
)
- Liskov Substitution Principle (LSP) (
Example01Before
,Example01After
) - Interface Segregation Principle (ISP) (
Example02Before
,Example02After
) - Dependency Inversion Principle (DIP) (
Example03Before
,Example03After
) - Singleton & Database Connection Example (
Example04Before
,Example04After
)
- Factory Pattern (
Example01
,Example02MethodParameter
,Example02SeparateMethods
) - Prototype Pattern (
Example03
) - Connection Pool (Singleton & Prototype Combination) (
Example04
)
This project uses Maven for dependency management. Ensure you have Java 17 installed.
git clone https://github.com/zahidesad/software_modelling_and_design.git
cd software_modelling_and_design