设计模式,简单工厂模式,为了去switch,类申明前后两难问题
原文C#
我用C++写的
编译的时候Employee类里用到了new Engineer(),engineer现在在后边,所以编译通过不了
如果使用前置申明,把class Engineer申明到Employee之前,说Engineer没有合适的构造函数。
如果把class Employee放到class Engineer,也不可能。
怎么做呢?
我用C++写的
class Employee
{
protected:
double m_basicSalary;
public:
Employee(double base = 1800):m_basicSalary(base)
{
}
virtual double PayAmount() const = 0;
static Employee* CreateEmployee(EmployeeType et)
{
switch(et)
{
case ENGINEER:
return new Engineer();
case SALESMAN:
return new SalesMan();
default:
throw "no such employee type!";
}
}
};
class Engineer : public Employee
{
public:
double PayAmount() const
{
return m_basicSalary;
}
};
class SalesMan : public Employee
{
double m_commission;
public:
SalesMan(double commission = 1000):m_commission(commission)
{
}
double PayAmount() const
{
return m_basicSalary+m_commission;
}
};编译的时候Employee类里用到了new Engineer(),engineer现在在后边,所以编译通过不了
如果使用前置申明,把class Engineer申明到Employee之前,说Engineer没有合适的构造函数。
如果把class Employee放到class Engineer,也不可能。
怎么做呢?
...全文
相关推荐
java设计模式学习之简单工厂模式
主要为大家详细介绍了java设计模式学习之简单工厂模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
大话设计模式C++版——简单工厂模式
简单工厂模式的好处在于将具体对象的产生过程进行了封装,用户不需要关系这个对象怎么来的,只需要just use it,同时有了对象工厂这个中间人,可以根据需要替换掉相应的对象,使用更加灵活。但简单工厂模式中,判断该产生何种对象时,采用了switch结构,如果需要改动或者增减对象时,需要改动switch结构的代码,不符合开放—封闭原则,即函数、类不可以修改,只能扩展。简单工厂模式应该是所有设计模式中最简单,也最基础的一种模式,以下是一个简单的采用工厂模式写一个加减法的计算器。3、工厂类——生成抽象对象。
简单工厂模式的优点缺点
描述简单工厂模式的优点缺点,有助于编写系统代码
01简单工厂模式_设计模式_
这是对设计模式的讲解
C++设计模式之简单工厂模式实例
主要介绍了C++设计模式之简单工厂模式实例,工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品,需要的朋友可以参考下


模式及实现
