私はデータ構造「Person」を持っています
struct Person
{
protected:
string name;
int age;
string address;
...
}
この構造の周りに「ビュー」を作成して、さまざまなメンバー変数へのアクセスを分離したいと思います。
class PersonRead: public Person
{
public:
string getName() {..}
int getAge() {...}
...
}
class PersonUpdate: public Person
{
public:
void setAddress( string address_ ) {...}
void setAge( int age_ ) {...}
...
}
私はこれを使用して、本当に必要なメソッド/変数のみを公開します。
int main()
{
...
writePersonDataToFile ( (PersonRead) personObj );
updatePersonData ( (PersonUpdate) personObj);
...
}
上記のコードは私の目的を果たしますが、次のようないくつかの問題があります。
ここでの公的継承は、正確には「is-a」関係ではありません
PersonからIndianPersonを派生させ、対応するすべてのインターフェイスを取得する必要があります。これは悪いダイヤモンドパターンにつながります:
struct IndianPerson: public Person {}; class IndianPersonRead: public IndianPerson, public PersonRead {}; //Person Class common, Diamond pattern here!
そのようなデザインパターンの名前はありますか?このパターンを実装するためのより良い方法は何ですか?ポリシークラスが役立つかもしれないと感じていますが、これを実装する方法を理解できません
どんな例でも大いに役立ちます