IT

객체지향 설계 5대 원리 SOLID - SRP

상쾌한기분 2021. 1. 21. 16:18
반응형

S - SRP - Single Responsiblity Principle (단일 책임 원칙) 

한 클래스는 하나의 책임만 가져야 한다.

 

다음과 이미지처럼 트럭 정보를 관리하는 클래스가 있다고 가정

class Truck:
    id_number = None
    car_number = None
    owner_name = None

    def __init__(self, id_number, car_number, owner_name):
        self.id_number = id_number
        self.car_number = car_number
        self.owner_name = owner_name

트럭의 차대번호는 생산에 따라 부여된 고유 번호로 변경되지 않지만, 소유주 차량등록번호는 변경 될 가능성이 있는 정보이다. 따라서 TruckOwnerInfo 클래스를 생성을 하여 해당 정보를 담당할 수 있도록 해준다.

class Truck:
    id_number = None
    owner_info = None

    def __init__(self, id_number, owner_info: TruckOwnerInfo):
        self.id_number = id_number
        self.owner_info = owner_info


class TruckOwnerInfo:
    car_number = None
    owner_name = None

만약, 여기서 트럭의 색이나 바퀴 등의 정보를 담당하는 클래스를 생성한다고 한다고 하면,

class Truck:
    id_number = None
    owner_info = None
    detail_info = None

    def __init__(self, id_number, owner_info: TruckOwnerInfo, detail_info: TruckDetailInfo):
        self.id_number = id_number
        self.owner_info = owner_info
        self.detail_info = detail_info


class TruckOwnerInfo:
    car_number = None
    owner_name = None


class TruckDetailInfo:
    color = None
    wheel = None

이런식으로 TruckDetail Info클래스를 생성하여 해당 클래스에서만 변경이 일어나고, Truck 클래스안에서는 변경이 없도록 해준다.

728x90
반응형