抽象工厂

        抽象工厂由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 ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值