设计模式-工厂模型

3:简单的工厂模型
 将各种水果抽象出来一个水果类 作为父类
 在工场类中 反回父类的指针
 在应用层 通过父类指针去调用虚函数
 
 应用层 直接 与工厂类交互 避免与应用层 与其他水果类之间的交互
#include<iostream>
#include <string>
using namespace std;
//水果类
class Fruit
{
public:
 virtual void showname() = 0;
};
class Apple:public Fruit
{
public:
 virtual void showname()
 {
  cout << "apple" << endl;
 }
};
class Ban :public Fruit
{
public:
 virtual void showname()
 {
  cout << "banan" << endl;
 }
};
//工厂类
class Factory
{
public:
 Fruit * creatFruit(string kind)
 {
  Fruit * f = NULL;
  if (kind == "apple")
  {
   f = new Apple;
  }
  else if (kind == "ban")
  {
   f = new Ban;
  }
  return f;
 }
};
//应用层
int main(void)
{
 Factory fa;
 Fruit * f = NULL;
 f = fa.creatFruit("apple");
 f->showname();
 delete f;
 f = fa.creatFruit("ban");
 f->showname();
 delete f;
 
 system("pause");
 return 0;
}

4:抽象工厂类:
#include<iostream>
using namespace std;
// 抽象出来水果的种类
class Apple {
public:
 virtual void showname() = 0;
};
class Banana {
public:
 virtual void showname() = 0;
};
//实现不同产地的水果
class Hban :public Banana
{
public:
 virtual void showname()
 {
  cout << "Hban" << endl;
 }
};
class Dban :public Banana
{
public:
 virtual void showname()
 {
  cout << "Dban" << endl;
 }
};
class Happle :public Apple
{
public:
 void showname()
 {
  cout << "hAPPLE" << endl;
 }
};
class Dapple :public Apple
{
public:
 void showname()
 {
  cout << "dAPPLE" << endl;
 }
};
// 抽象出工厂
class Factory {
public:
 virtual Apple * create() = 0;
 virtual Banana * create2() = 0;
};
//实现不同地方的工厂
class Hfactory :public Factory
{
public:
 virtual Apple * create()
 {
  return new Happle;
 }
 virtual Banana * create2()
 {
  return new Hban;
 }
};
class Dfactory :public Factory
{
public:
 virtual Apple * create()
 {
  return new Dapple;
 }
 virtual Banana * create2()
 {
  return new Dban;
 }
};
int main(void)
{
 Apple * a = NULL;
 Factory * f = NULL;
 Banana * b = NULL;
 f = new Hfactory;
 a = f->create();
 a->showname();
 b = f->create2();
 b->showname();
 delete f;
 delete a;
 delete b;
 system("pause");
 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值