基于 Abstract Factory 模式与 Singleton 模式实现一个简单的邮件生成程序,其主要 需求如下: (1) 所有的商家都对自己的客户进行了分类; (2) 所有商家都不定期地要向客户发送客户感兴趣的商品广告; (3) 所有商家都要在节假日向客户发送祝福邮件; (4) 设计的程序中应存在单例对象
时间: 2023-05-20 09:05:04 浏览: 56
可以使用以下代码实现:
// Abstract Factory
class MailFactory {
public:
virtual Mail* createMail() = 0;
};
// Concrete Factory
class BusinessMailFactory : public MailFactory {
public:
Mail* createMail() override {
return new BusinessMail();
}
};
// Product
class Mail {
public:
virtual void send() = 0;
};
// Concrete Product
class BusinessMail : public Mail {
public:
void send() override {
// send business mail
}
};
// Singleton
class MailGenerator {
private:
static MailGenerator* instance;
MailFactory* factory;
MailGenerator() {
factory = new BusinessMailFactory();
}
public:
static MailGenerator* getInstance() {
if (instance == nullptr) {
instance = new MailGenerator();
}
return instance;
}
Mail* generateMail() {
return factory->createMail();
}
};
int main() {
MailGenerator* generator = MailGenerator::getInstance();
Mail* mail = generator->generateMail();
mail->send();
return 0;
}
注意,这只是一个简单的示例,实际应用中可能需要更多的类和方法来实现更复杂的需求。
阅读全文