0
我正在嘗試開發一款遊戲,並且遇到了管理遊戲對象的創建和銷燬的問題,並被幾個人建議嘗試使用工廠模式。 我去讀了工廠模式,並試圖實現它,我遇到了障礙。打破工廠模式中的循環依賴
// inside of EnemyGuy.h
#pragma once
#include "Entity.h"
#include "EntityFactory.h"
class EnemyGuy: public Entity {
public:
void update();
}
//inside of EnemyGuy.cpp
#include "EnemyGuy.h"
void EnemyGuy::update(){
if (you see player)
Entity* shotFired = EntityFactory::create("bullet", params);
}
// inside of EntityFactory.h
#pragma once
class Entity
#include "Bullet.h"
#include "EnemyGuy.h"
class EntityFactory{
public:
static Entity* create(const std::string passed, params);
}
// inside of EntityFactory.cpp
#include "EntityFactory.h"
static Entity* create(const std::string passed, params){
if (passed == "bullet")
return new Bullet(params);
if (passed == "enemyguy")
return new EnemyGuy(params);
}
我得到一個循環依賴錯誤,因爲工廠需要包括EnemyGuy因此它可以創建它的實例,然後EnemyGuy需要包括工廠,因此它可以調用Create()方法。
通常情況下,你會打破一個循環依賴與一個前向聲明,但在這種情況下,一個前向聲明不會這樣做。 我該如何解決這個問題?
真棒謝謝 – user1438585