SOLID; Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation ve Dependency Inversion prensiplerinin baş harflerinden oluşan bir akronimdir. Bu prensipler, daha esnek, sürdürülebilir ve bakımı kolay kodlar yazmamıza yardımcı olur.
Bu depo her prensip için ayrı bir Maven modülü içeren multi-module türünden bir proje haline getirilmiştir. Her modülde prensibin:
beginpaketi → prensibin ihlal edildiği (kötü) örnek,endpaketi → prensibin doğru uygulandığı örnek,commonpaketi → her iki örneğin paylaştığı yardımcı sınıflar (bazı modüllerde yoktur)
şeklinde bir düzeni vardır.
| Modül | Paket kökü | begin / end alt paketleri |
|---|---|---|
| single-responsibility | com.buraksenyurt.training.solid.srp |
.srp.begin.Main / .srp.end.Main |
| open-closed | com.buraksenyurt.training.solid.ocp |
.ocp.begin.Main / .ocp.end.Main |
| liskov-substitution | com.buraksenyurt.training.solid.lsp |
.lsp.begin.Main / .lsp.end.Main |
| interface-segregation | com.buraksenyurt.training.solid.isp |
.isp.begin.Main / .isp.end.Main |
| dependency-inversion | com.buraksenyurt.training.solid.dip |
.dip.begin.Main / .dip.end.Main |
- JDK 21 veya üzeri
- Apache Maven 3.9+
# Ubuntu
sudo apt update
sudo apt install default-jdk maven
java -version
mvn -versionTüm modülleri derlemek için;
mvn clean compileBir prensibin doğru (end) örneğini çalıştırmak için;
mvn -pl single-responsibility exec:java
mvn -pl open-closed exec:java
mvn -pl liskov-substitution exec:java
mvn -pl interface-segregation exec:java
mvn -pl dependency-inversion exec:javaAynı prensibin ihlal edildiği (begin) örneği çalıştırmak için begin profilini ekleyerek çalıştırın:
mvn -pl single-responsibility exec:java -P begin
-pl <modül>çalıştırılacak modülü seçer. Varsayılan olarakend.Main,-P beginverildiğindebegin.Mainçalışır (bkz. kökpom.xml).
Herhangi bir Main sınıfını doğrudan tam adıyla da çalıştırabilirsiniz:
mvn -pl dependency-inversion exec:java -Dexec.mainClass=com.buraksenyurt.training.solid.dip.begin.Main