【发布时间】:2015-12-10 22:10:28
【问题描述】:
我正在努力实现适配器设计模式以利用现有的类。我的问题是,这些类的工作方式几乎相同,但名称不同,功能较少。
例如,每个 Work 类和 Homework 类都有一个功能相同,即 doWork() 和 doHomework().
我可以将这些链接到 Task 界面中的 doThis()。但是,Work 类没有 done() 功能,而 Homework 类有。我将如何处理这个问题?只是没有执行?有没有更好的办法?
class Task {
public:
virtual int doThis() = 0;
virtual bool done() = 0;
};
class Work {
public:
Work();
int doWork();
};
class Homework {
public:
Homework();
int doHomework();
bool done();
bool isDone;
};
class WorkAdapter : public Task, private Work {
public:
WorkAdapter();
int doThis() {
return doWork();
}
virtual bool done() {
// Is this okay not to implment this?
}
};
class HomeworkAdapter : public Task, private Homework {
public:
HomeworkAdapter();
int doThis() {
return doWork();
}
virtual bool done() {
return isDone;
}
};
int main() {
Task *homework = new HomeworkAdapter();
Task *work = new WorkAdapter();
homework->doThis();
bool isHomeworkDone = homework->done();
work->doThis();
bool isWorkDone = work->done(); // This would never be called in my implementation...
}
【问题讨论】:
标签: c++ design-patterns adapter