抽象工厂由4部分组成 , 产品类 , 生产产品的工厂类 , 抽象工厂类(里面包含了不同的产品), 生产产品抽象工厂(里面包含了不同的产品).PS : 工厂的作用是生产产品.
生产产品的工厂继承产品(为了更好维护程序 , 每个产品每个工厂对应着一个类).
/*************************************************************************
> File Name: define_1.h
> Author: Code4
> Mail: 1614652215@qq.com
> Created Time: 2018年04月14日 星期六 19时11分48秒
************************************************************************/
#pragma once
#include"iostream"
using namespace std ;
//产品1
class MTable{
public:
virtual void Find() = 0 ;
virtual void Add() = 0 ;
};
//产品2
class STable{
public:
virtual void Find() = 0;
virtual void Add() = 0 ;
};
//产品1的工厂1
class UMtable : public MTable{
public:
void Find() ;
void Add() ;
};
//产品1的工厂2
class DMtable : public MTable{
public:
void Find() ;
void Add() ;
};
//产品2 的工厂1
class UStable : public STable{
public:
void Find() ;
void Add() ;
};
//产品2 的工厂2
class DStable : public STable{
public :
void Find () ;
void Add () ;
};
//抽象工厂
class Abs_Factory {
public :
virtual MTable * createM() = 0 ;
virtual STable * createS() = 0 ;
};
//工厂1的抽象
class U_Factory : Abs_Factory{
public:;
MTable *createM() ;
STable *createS() ;
};
//工厂2的抽象
class D_Factory : Abs_Factory{
public:
MTable *createM() ;
STable *createS() ;
};
/*************************************************************************
> File Name: index_1.cpp
> Author: Code4
> Mail: 1614652215@qq.com
> Created Time: 2018年04月14日 星期六 19时12分09秒
************************************************************************/
#include "iostream"
#include "define_1.h"
using namespace std ;
void UMtable::Find(){
cout<<" UM table Find "<<endl ;
}
void UMtable::Add(){
cout<<" UM table Add "<<endl ;
}
void DStable:: Find(){
cout<<"DS table Find"<<endl;
}
void DStable :: Add(){
cout<<"DS table Add"<<endl ;
}
void UStable :: Find(){
cout<<"US table Find "<<endl;
}
void UStable :: Add(){
cout << "US table Add "<<endl ;
}
void DMtable :: Find (){
cout <<" DS table find"<<endl ;
}
void DMtable :: Add (){
cout << "DS table Add "<<endl ;
}
MTable * U_Factory :: createM(){
return new UMtable() ;
}
STable * U_Factory :: createS(){
return new UStable() ;
}
MTable * D_Factory :: createM(){
return new DMtable () ;
}
STable * D_Factory :: createS() {
return new DStable () ;
}
/*************************************************************************
> File Name: main.cpp
> Author: Code4
> Mail: 1614652215@qq.com
> Created Time: 2018年04月14日 星期六 19时11分19秒
************************************************************************/
#include "iostream"
#include "define_1.h"
#include "index_1.cpp"
using namespace std ;
int main(){
U_Factory *l = new U_Factory (); //实例化一个工厂
MTable *n = l->createM() ; //实例化工厂的一个产品
n->Find() ; //调用产品一个功能
return 0 ;
}