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