如何限制从特定类创建对象



我有一个'Bank'类和一个'Branch'类。'"Branch"继承自"Bank"。我希望只允许"Bank"对象创建新的"Branch"对象。(例如,只有花旗集团才能开设花旗银行的新分行)。

实现这一目标的最佳设计模式是什么?

我目前正在使用带有私人构造函数的友元类。但我不确定这样做是否正确。

"分行"继承自"银行"

这是你的问题,你在使用继承。您正在寻找一个抽象的工厂模式,其中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*,但它会指向一个正确的具体对象。

相关内容

  • 没有找到相关文章

最新更新