大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 设计模式学习-----抽象工厂模式

设计模式学习-----抽象工厂模式

关键词:Java设计模式学习-----抽象工厂模式  阅读(597) 赞(19)

[摘要]本文主要是对设计模式学习-----抽象工厂模式的讲解,希望对大家学习设计模式学习-----抽象工厂模式有所帮助。

  GOOD:定义了一个创建一系列相关或相互依赖的接口,而无需指定它们的具体类。

  用于交换产品系列,如ACCESS->SQLSERVER;

  产品的具体类名被具体工厂的实现分离

  [html]

  #include <string>

  #include <iostream>

  #include <vector>

  using namespace std;

  //用户抽象接口

  class IUser

  {

  public :

  virtual void GetUser()=0;

  virtual void InsertUser()=0;

  };

  //部门抽象接口

  class IDepartment

  {

  public:

  virtual void GetDepartment()=0;

  virtual void InsertDepartment()=0;

  };

  //ACCESS用户

  class CAccessUser : public IUser

  {

  public:

  virtual void GetUser()

  {

  cout《"Access GetUser"《endl;

  }

  virtual void InsertUser()

  {

  cout《"Access InsertUser"《endl;

  }

  };

 

  //ACCESS部门

  class CAccessDepartment : public IDepartment

  {

  public:

  virtual void GetDepartment()

  {

  cout《"Access GetDepartment"《endl;

  }

  virtual void InsertDepartment()

  {

  cout《"Access InsertDepartment"《endl;

  }

  };

  //SQL用户

  class CSqlUser : public IUser

  {

  public:

  virtual void GetUser()

  {

  cout《"Sql User"《endl;

  }

  virtual void InsertUser()

  {

  cout《"Sql User"《endl;

  }

  };

  //SQL部门类

  class CSqlDepartment: public IDepartment

  {

  public:

  virtual void GetDepartment()

  {

  cout《"sql getDepartment"《endl;

  }

  virtual void InsertDepartment()

  {

  cout《"sql insertdepartment"《endl;

  }

  };

  //抽象工厂

  class IFactory

  {

  public:

  virtual IUser* CreateUser()=0;

  virtual IDepartment* CreateDepartment()=0;

  };

  //ACCESS工厂

  class AccessFactory : public IFactory

  {

  public:

  virtual IUser* CreateUser()

  {

  return new  CAccessUser();

  }

  virtual IDepartment* CreateDepartment()

  {

  return new CAccessDepartment();

  }

  };

 

  //SQL工厂

  class SqlFactory : public IFactory

  {

  public:

  virtual IUser* CreateUser()

  {

  return new  CSqlUser();

  }

  virtual IDepartment* CreateDepartment()

  {

  return new CSqlDepartment();

  }

  };

  //客户端:

  int main()

  {

  IFactory* factory= new SqlFactory();

  IUser* user=factory->CreateUser();

  IDepartment* depart = factory->CreateDepartment();

  user->GetUser();

  depart->GetDepartment();

  return 0;

  }



相关评论