반응형
객체지향 5대원칙 중 처음의 S에 해당하는것으로
SRP(Single Responsibility Principle) - 단일 책임 원칙
하나의 객체는 반드시 하나의 기능만을 수행하는 책임을 가지면서
클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다는 의미다.
그럼 예를 살펴보자
package kr.co.touch;
public class Family {
private String member;
public void setMember(String member){
this.member = member;
}
public void Work(){
if(this.member == "Mother"){
System.out.println("집안일을 하신다.");
}
if(member == "Father"){
System.out.println("회사일을 하신다.");
}
}
}
package kr.co.touch;
public class Main {
public static void main(String args[]){
Family family = new Family();
family.setMember("Mother");
family.Work();
family.setMember("Father");
family.Work();
}
}
Work라는 메소드는 상황에 따라서 두가지의 일을 하고 있습니다. 이는 하나의 객체는 반드시 하나의
기능만을 수행하는 책임에 위배됩니다. 따라서 이를 변경하면 이렇게 할수 있습니다.
package kr.co.touch;
public abstract class Family {
public abstract void Work();
}
package kr.co.touch;
public class Mother extends Family{
@Override
public void Work() {
System.out.println("집안일을 하신다.");
}
}
package kr.co.touch;
public class Father extends Family{
@Override
public void Work() {
System.out.println("회사일을 하신다.");
}
}
package kr.co.touch;
public class Main {
public static void main(String args[]){
Family family = new Mother();
family.Work();
family = new Father();
family.Work();
}
}
Family라는 추상클래스로 Work라는 메소드를 정의하고 Mother,Father라는 클래스를 만들어서
Family를 상속받고 추상클래스의 메소드를 각 클래스에 맞게 구현했습니다.
이러면서 하나의 객체는 하나의 기능만을 수행하는 책임을 지키게 됬네요.
그리고 저도 이걸 공부하면서 정리하는거라 잘 이해가 안되는부분은 말씀해주시고
제가 잘못 알고 있는 내용이 있다면 과감히 지적해 주시면 감사하겠습니다.
고맙습니다.
반응형
'객체지향 설계5대 원칙 > JAVA' 카테고리의 다른 글
객체지향5대원칙-DIP(DIP-Dependency Inversion Principle) - 의존 역전 원칙 (0) | 2023.05.23 |
---|---|
객체지향5대원칙-LSP(Liskov Substitution Principle) - 리스코프 치환 원칙 (0) | 2023.05.23 |
객체지향5대원칙-ISP(Interface Segregation Principle) - 인터페이스 분리 원칙 (0) | 2023.05.22 |
객체지향5대원칙-OCP(Open Closed Principle) - 개방 폐쇄 원칙 (0) | 2023.05.22 |