我有一个数据结构“人”
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!
这种设计模式有名字吗?有什么更好的方法来实现这种模式?我有一种感觉政策类可能会有所帮助,但无法弄清楚如何实现这一点
任何例子都会有很大帮助