博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工厂方法模式
阅读量:3942 次
发布时间:2019-05-24

本文共 1452 字,大约阅读时间需要 4 分钟。

工厂方法模式

在这里插入图片描述

在这里插入图片描述

运用简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件同态实例化相关的类,对客户端来说,去除了与具体产品的依赖

工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代来进行,想要加功能,本来是要修改工厂类的,然后修改客户端就行了。

  • 抽象工厂类
    抽象工厂类中定义具体工厂调用的接口
  • 抽象产品类
    抽象产品类中定义具体产品的调用接口
  • 具体工厂类
    实现不同的产品的生产
  • 具体产品类
    实现产品的功能
    工厂方法模式的优缺点:
    优点:
#include 
using namespace std;//工厂方法类//抽象产品类template
class Base{
public: virtual T operation(T a,T b) = 0;};//具体产品类template
class Add:public Base
{
public: T operation(T a,T b) {
return a + b; }};template
class Sub:public Base
{ public: T operation(T a,T b) { return a - b; }};template
class Mul:public Base
{ public: T operation(T a,T b) { return a * b; }};template
class Div:public Base
{ public: T operation(T a,T b) { if(b == 0) { throw "除数为0"; } return a / b; }};//抽象工厂类template
class Factory{ public: virtual Base
*createOperation() = 0;};//具体工厂类template
class AddFactoty: public Factory
{ public: Base
*createOperation() { return new Add
(); }};template
class SubFactoty: public Factory
{ public: Base
*createOperation() { return new Sub
(); }};template
class MulFactoty: public Factory
{ public: Base
*createOperation() { return new Mul
(); }};template
class DivFactoty: public Factory
{ public: Base
*createOperation() { return new Div
(); }};int main(){ Factory
*oper = new AddFactoty
();//创建一个加法工厂 Base
*ADD = (Add
*)oper->createOperation(); cout << ADD->operation(20,10) << endl; return 0;}

转载地址:http://lxnwi.baihongyu.com/

你可能感兴趣的文章
使用Maven Archetype生成工程报错的解决
查看>>
System.getProperty()系统参数
查看>>
Linux系统下批量删除.svn目录
查看>>
大数据行业应用趋势
查看>>
Mac + Rails3 + MongoDB的Demo工程搭建
查看>>
隐藏于Python内的设计之禅彩蛋
查看>>
VSCode配置C/C++环境
查看>>
OTB测试之Visual Tracker Benchmark v1.0全过程配置流程
查看>>
缓存在Springboot应用中的使用
查看>>
Linux(一)- 认识Linux
查看>>
Linux(二)- Linux常用命令
查看>>
Linux(三)- Java开发环境搭建
查看>>
Linux(四)- Ubuntu安装Mysql
查看>>
Ubuntu安装开发环境
查看>>
Deepin开发环境安装
查看>>
Spring入门
查看>>
网址大全
查看>>
Git的使用
查看>>
Linux域名IP映射
查看>>
Java的反射机制
查看>>