2

「銀行」クラスと「支店」クラスがあります。「支店」は「銀行」から継承されます。「銀行」オブジェクトのみが新しい「支店」オブジェクトを作成できるようにしたいと考えています。(例えば、シティ銀行の新しい支店を開設できるのはシティグループだけです)。

これを達成するための最良の設計パターンは何ですか?

現在、プライベートコンストラクターでフレンドクラスを使用しています。しかし、それが正しい方法であるかどうかはわかりません。

4

1 に答える 1

2

「支店」は「銀行」から継承されます

問題があります。継承を使用しています。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*が、それは正しい具象オブジェクトを指します。

于 2012-08-01T18:42:08.097 に答える