「銀行」クラスと「支店」クラスがあります。「支店」は「銀行」から継承されます。「銀行」オブジェクトのみが新しい「支店」オブジェクトを作成できるようにしたいと考えています。(例えば、シティ銀行の新しい支店を開設できるのはシティグループだけです)。
これを達成するための最良の設計パターンは何ですか?
現在、プライベートコンストラクターでフレンドクラスを使用しています。しかし、それが正しい方法であるかどうかはわかりません。
「銀行」クラスと「支店」クラスがあります。「支店」は「銀行」から継承されます。「銀行」オブジェクトのみが新しい「支店」オブジェクトを作成できるようにしたいと考えています。(例えば、シティ銀行の新しい支店を開設できるのはシティグループだけです)。
これを達成するための最良の設計パターンは何ですか?
現在、プライベートコンストラクターでフレンドクラスを使用しています。しかし、それが正しい方法であるかどうかはわかりません。
「支店」は「銀行」から継承されます
問題があります。継承を使用しています。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*
と callがある場合createBranch()
、 back が返されますBranch*
が、それは正しい具象オブジェクトを指します。