将一个大的工厂抽象出来,然后每一个类都有一个对应的具体的工厂
缺点:
类的个数成倍增加(增加一个类,就要增加一个对应的工厂),从而导致类越来越多,增加了维护的成本
增加了系统的抽象性和理解难度
好处:
符合开闭原则
实现了对象创建和使用的分离
系统的可扩展性变得很好,无需修改接口和原类
使用场景:
客户端不知道他所需要的对象的类
抽象工厂类通过其子类来指定创建哪个对象
代码
#includeusing namespace std;
class abstractFruit {public:
virtual void showName() = 0;
};
class Apple : public abstractFruit {public:
void showName() override {cout<< "i am apple"<< endl;
}
};
class Banana : public abstractFruit {public:
void showName() override {cout<< "i am Banana"<< endl;
}
};
// 抽象工厂
class AbstractFactory {public:
virtual abstractFruit* CreateFruit() = 0;
};
//苹果工厂
class AppleFactory : public AbstractFactory {public :
abstractFruit* CreateFruit() override {return new Apple;
}
};
//香蕉工厂
class BananaFactory : public AbstractFactory {public :
abstractFruit* CreateFruit() override {return new Banana;
}
};
void test01() {AbstractFactory * factory = nullptr;
abstractFruit* fruit = nullptr;
factory = new AppleFactory;
fruit = factory->CreateFruit();
fruit->showName();
delete fruit;
delete factory;
factory = new BananaFactory;
fruit = factory->CreateFruit();
fruit->showName();
delete fruit;
delete factory;
}
int main() {test01();
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧