디자인 모델 6 대 원칙: 단일 직책 원칙 - 환상 적 인 서 유 를 데려 간다 (1)
단일 직책 원칙 의 영문 이름 은 Single Responsibility Principle 이 고 줄 임 말 은 SRP 입 니 다.
정의. 한 가지 유형 에 있어 서 유형의 직책 은 단일 하고 대외 적 으로 하나의 기능 만 제공 하 며 그 변화의 원인 은 하나 밖 에 없어 야 한다.통속 적 으로 말 하면 한 가지 유형의 함 수 는 하나의 기능 만 을 위해 서비스 하고 관련 성 이 매우 높다 는 것 이다.
왜 단일 직책 원칙 으로
환상 적 인 서 유 를 이용 하여 오 래 국 낚시 를 하 는 것 을 사례 로 삼다.
//
// .cpp
// c++
//
// Created by on 16/5/1.
// Copyright © 2016 liulongling. All rights reserved.
//
#include <iostream>
#include <list>
#include <map>
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<<"xx ...."<<endl;
}
//
void insert(User user)
{
// 5
if(this->users.size() >=5)
{
cout<<" "<<endl;
return;
}
this->users.push_back(user);
}
//
void exit(User user)
{
//this->users.remove(user);
}
private:
list<User> 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 <iostream>
#include <list>
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<<"ID"<<user.getId()<<" "<<endl;
// 5
if(this->users.size() >=5)
{
cout<<" "<<endl;
return;
}
this->users.push_back(user);
}
//
void exit(User user)
{
}
list<User> getUsers()
{
return this->users;
}
private:
list<User> users;
};
class Fishing
{
public:
Fishing(FishingRoom* room)
{
this->room = room;
}
void fishEat()
{
for(User& user:this->room->getUsers())
{
if(user.getEatTime()>0)
{
cout<<"ID "<<user.getId()<<" ...."<<endl;
}
sleep(2);
}
}
FishingRoom* getRoom()
{
return this->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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.