设计模式为我的班级添加新功能

问题描述 投票:0回答:0

我正在尝试为我的结构找到解决方案。让我试着告诉我我在做什么。

我有两个课程“Englishman”和“CanadaMan”以及一些能力课程“CanSpeakEnglish”、“CanSpeakFrench”

class CanTalkEnglish{
    Database database;
    void TalkEnglish(){
      Console.Write(" am taking {this.database.MyLanguage}");
    } 
};

class CanTalkFrench{
    Database database;
    void TalkFrench(){
      Console.Write("Je parle {this.database.MyLanguage}");
    }
};

class Englishman : public CanTalkEnglish {
    Database database;
    void Talk(){
       if (this->database.Mood == "OpenToCommunication"){
         this->TalkEnglish();
       }
   }
};

class CanadaMan : public CanTalkEnglish,CanTalkFrench {
    Database database;
    void Talk(){
       if (this->database.Mood == "OpenToCommunication"){
         this->TalkEnglish();
         this->TalkFrench();
       }
   }
};

这是我想象中的结构,但问题是“数据库”。所有“Person”类和所有“Capability”类都需要它。但是 this.database 调用是不明确的,有没有设计模式来管理这种需求?

c++ oop design-patterns solid-principles
© www.soinside.com 2019 - 2024. All rights reserved.