[디자인 모델 6 대 원칙]: 단일 직책 원칙 - 환상 적 인 서 유 를 데려 갈 게 (1)

2983 단어 디자인 모드
후진 원칙 에 의존 (2)
개폐 원칙 (3)
디 미트 원칙 - 환상 적 인 서 유 를 데려 다 줄 게 (4)
리 씨 교체 원칙 (5)
인터페이스 격 리 원칙 (6)
   정의.      단일 직책 원칙 의 영문 이름 은 Single Responsibility Principle 이 고 줄 임 말 은 SRP 입 니 다. 한 가지 유형 에 있어 서 유형의 직책 은 단일 하고 대외 적 으로 하나의 기능 만 제공 하 며 그 변화의 원인 은 하나 밖 에 없어 야 한다.통속 적 으로 말 하면 한 가지 유형의 함 수 는 하나의 기능 만 을 위해 서비스 하고 관련 성 이 매우 높다 는 것 이다.
   케이스
    한 조 의 게이머 들 이 팀 을 구성 하여 오 래 국 에 가서 낚시 를 하 다.
//
//         .cpp
//  c++
//
//  Created by     on 16/5/1.
//  Copyright © 2016  liulongling. All rights reserved.
//

#include 
#include 
#include 
using namespace std;
//    AL    

//    
class User
{
public:
    User(int id)
    {
        this->userId = id;
    }
    int getId()
    {
        return this->userId;
    }
private:
    int userId;
};



class Fishing
{
public:
    
    void fishEat()
    {
        cout<users.size() >=5)
        {
            cout<users.push_back(user);
    }
    //      
    void exit(User user)
    {
        //this->users.remove(user);
    }
private:
    list users;
};


int main()
{
    Fishing fish;
    for(int i = 0 ;i<6;i++){
        User user(i+1);
        fish.insert(user);
    }
    fish.fishEat();
    return 0;
}

위의 코드 를 보면 낚시 류 가 두 가지 일 을 했 고 사용자 와 물고기 간 의 조작 을 제외 하고 사용자 가 방 에서 나 가 는 조작 도 볼 수 있다.단일 직책 원칙 의 정 의 는 대외 적 으로 한 가지 기능 만 제공 하고 두 가지 기능 을 제공 하 는 것 이다.그래서 결합 을 풀 어야 합 니 다.코드 는 다음 과 같 습 니 다:
//
//        .cpp
//  c++
//
//  Created by    
//  Copyright © 2016  liulongling. All rights reserved.
//

#include 
#include 


using namespace std;
//AL    

//    
class User
{
public:
    User(int id)
    {
        this->userId = id;
        this->eatTime =1;
    }
    int getId()
    {
        return this->userId;
    }
    time_t getEatTime()
    {
        return this->eatTime;
    }
private:
    int userId;
    int eatTime;
};

//    
class FishingRoom
{
public:
    FishingRoom()
    {
        this->users.clear();
    }
    //      
    void insert(User user)
    {
        cout<users.size() >=5)
        {
            cout<users.push_back(user);
    }
    //      
    void exit(User user)
    {
       
    }
    
    list getUsers()
    {
        return this->users;
    }
private:
    list users;
};


class Fishing
{
public:
    Fishing(FishingRoom* room)
    {
        this->room = room;
    }
    void fishEat()
    {
        for(User& user:this->room->getUsers())
        {
            if(user.getEatTime()>0)
            {
                cout<room;
    }
private:
    FishingRoom* room;
};



int main()
{
    FishingRoom* room = new FishingRoom;
    Fishing fish(room);
    for(int i = 0 ;i<6;i++){
        User user(i+1);
        fish.getRoom()->insert(user);
    }
    fish.fishEat();
    return 0;
}

다음 편 개폐 원칙 - 환상 적 인 서 유 를 안내 합 니 다 (2)

좋은 웹페이지 즐겨찾기