Я пытаюсь овладеть принципами SOLID Роберта Мартина. В настоящее время я смотрю на слабую связь и высокую когезию. Я создал некоторый код, который представляет мое текущее понимание этого предмета. Не могли бы вы, ребята, сказать мне, если на правильном пути? Есть ли шанс улучшить текущий дизайн?
Основное приложение, которое создает два адреса и назначает их сотруднику:
public class App {
public static void main(String[] args) {
Address homeAddress = new HomeAddress("This is my Home Address");
Address workAddress = new WorkAddress("This is my Work Address");
Employee employee = new Employee(homeAddress, workAddress);
employee.getAddresses();
}
}
Класс работника:
public class Employee {
private Address homeAddress;
private Address workAddress;
Employee(Address homeAddress, Address workAddress) {
this.homeAddress = homeAddress;
this.workAddress = workAddress;
}
public void getAddresses() {
System.out.println("homeAddress: " + homeAddress.getAddress());
System.out.println("workAddress: " + workAddress.getAddress());
}
}
Адресный интерфейс:
public interface Address {
String getAddress();
}
Конкретная реализация адреса 1 (домашний адрес):
public class HomeAddress implements Address {
String specificAddress;
public HomeAddress(String specificAddress) {
this.specificAddress = specificAddress;
System.out.println("In HomeAddress Constructor");
}
public String getAddress() {
return specificAddress;
}
}
Реализация специального адреса 2 (WorkAddress):
public class WorkAddress implements Address {
String specificAddress;
public WorkAddress(String specificAddress) {
this.specificAddress = specificAddress;
System.out.println("In WorkAddress Constructor");
}
public String getAddress() {
return this.specificAddress;
}
}
Любая помощь / обратная связь будет принята с благодарностью! Заранее спасибо.
Марк.