'지점'은 '은행'
문제가있다, 당신이 사용하고 상속에서 상속됩니다. 추상 팩터 리 패턴을 찾고 있습니다 (Bank
은 지점 작성자 임). 분기 생성자는 해당 작성자에게만 액세스 할 수 있습니다.
struct Branch //abstract
{
virtual ~Branch() = 0;
};
class CitiBranch : Branch
{
friend class Citi; //only Citi can create instances of CityBranch
private:
CitiBranch();
};
struct Bank
{
virtual ~Bank() = 0;
virtual Branch* createBranch() = 0;
}
struct Citi : Bank
{
virtual Branch* creatBranch()
{
return new CityBranch;
}
}
이 프로그램은 구체적인 클래스가 아닌 인터페이스로 프로그램됩니다. 따라서 Branch
포인터와 Bank
포인터가 있고 정확한 타입을 알 필요가 없습니다.
Bank*
이 있고 createBranch()
이라면 Branch*
이 표시되지만 정확한 콘크리트 개체를 가리 킵니다.
합리적인 것처럼 보입니다. – Chad
정말로 이것을하고 싶다면,'Branch'에 대한 테스트를 작성하기가 더 어려워 질까요? 아마도 당신이 원하는 것은'Branch' 생성자가'Bank'를 인수로 삼는 것입니다. –
예 테스트가 더 어려워 질 것입니다.하지만 모든 코드는 모든 은행에 할당 할 수 있습니다. 그것은 내가 제한하고자하는 것입니다. – apostopher