본문 바로가기
객체지향 설계5대 원칙/PHP

객체지향5대원칙-SRP(Single Responsibility Principle) - 단일 책임 원칙

by 쁘락지 2023. 5. 26.
반응형
체지향 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를 상속받고 추상클래스의 메소드를 각 클래스에 맞게 구현했습니다.
이러면서 하나의 객체는 하나의 기능만을 수행하는 책임을 지키게 됬네요.
그리고 저도 이걸 공부하면서 정리하는거라 잘 이해가 안되는부분은 말씀해주시고
제가 잘못 알고 있는 내용이 있다면 과감히 지적해 주시면 감사하겠습니다.
고맙습니다.
반응형