設計模式 建立型 抽象工廠

2021-08-09 01:39:49 字數 2559 閱讀 1395

#pragma once

#ifndef abstractfactory_h

#define abstractfactory_h

// 抽象基類abstractproducta,代表產品a 的抽象

class abstractproducta

virtual ~abstractproducta(){};

}; // 派生類concreateproducta1,繼承自abstractproducta,代表產品a 的第一種實現

class concreateproducta1 : public abstractproducta

; // 派生類concreateproducta2,繼承自abstractproducta,代表產品a 的第二種實現

class concreateproducta2 : public abstractproducta

; // 抽象基類abstractproductb,代表產品b 的抽象

class abstractproductb

virtual ~abstractproductb(){};

}; // 派生類concreateproductb1,繼承自abstractproductb,代表產品b 的第一種實現

class concreateproductb1 : public abstractproductb

; // 派生類concreateproductb2,繼承自abstractproductb,代表產品b 的第二種實現

class concreateproductb2 : public abstractproductb

; // 抽象基類abstractfactory,工廠的抽象類,生產產品a 和產品b

class abstractfactory

virtual ~abstractfactory(){}

virtual abstractproducta* createproducta() = 0;

virtual abstractproductb* createproductb() = 0;

}; // 派生類concreatefactory1,繼承自abstractfactory

// 生產產品a 和產品b 的第一種實現

class concreatefactory1 : public abstractfactory

; // 派生類concreatefactory2,繼承自abstractfactory

// 生產產品a 和產品b 的第二種實現

class concreatefactory2 : public abstractfactory

; #endif

#include "stdafx.h"

#include "abstractfactory_impl.h"

#include concreateproducta1::concreateproducta1()

concreateproducta1::~concreateproducta1()

concreateproducta2::concreateproducta2()

concreateproducta2::~concreateproducta2()

concreateproductb1::concreateproductb1()

concreateproductb1::~concreateproductb1()

concreateproductb2::concreateproductb2()

concreateproductb2::~concreateproductb2()

concreatefactory1::concreatefactory1()

concreatefactory1::~concreatefactory1()

abstractproducta* concreatefactory1::createproducta()

abstractproductb* concreatefactory1::createproductb()

concreatefactory2::concreatefactory2()

concreatefactory2::~concreatefactory2()

abstractproducta* concreatefactory2::createproducta()

abstractproductb* concreatefactory2::createproductb()

// abstractfactory.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "abstractfactory_impl.h"

#include //提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。

int _tmain(int argc, _tchar* argv)

建立型設計模式 抽象工廠

抽象工廠模式 abstractfactory 每乙個模式都是針對一定問題的解決方案,工廠方法模式針對的是乙個產品等級結構 而抽象工廠模式針對的是多個產品等級結果。產品族 是指位於不同產品等級結構中,功能相關聯的產品組成的家族。一般是位於不同的等級結構中的相同位置上。每乙個產品等級結構中有多少個具體的...

設計模式 建立型 抽象工廠模式

建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客...

設計模式 建立型 抽象工廠模式

有點複雜。一般的工廠模式下,每個實體類都需要乙個對應的工廠,當實體類過多時工廠的數量也會變多。當實體類還有子類時,我們需要的工廠就更多了。抽象工廠模式是將所有工廠的共性抽象出來 public inte ce animalfactory 生產母狗和母貓 public class femaleanima...