Saya memiliki implementasi pola Command yang lama ini. Ini semacam mengeluarkan Konteks melalui semua implementasi DIOperasi , tetapi saya sadari kemudian, dalam proses belajar dan belajar (yang tidak pernah berhenti), itu tidak optimal. Saya juga berpikir bahwa "mengunjungi" di sini tidak benar-benar cocok dan hanya membingungkan.
Saya sebenarnya berpikir untuk mengembalikan kode saya, juga karena Perintah seharusnya tidak tahu apa-apa tentang yang lain dan saat ini mereka semua berbagi pasangan nilai kunci yang sama. Sangat sulit untuk mempertahankan kelas mana yang memiliki nilai kunci apa, kadang-kadang mengarah ke variabel duplikat.
Contoh use case: katakanlah CommandB membutuhkan UserName yang ditetapkan oleh CommandA . Haruskah CommandA mengatur kunci UserNameForCommandB = John ? Atau haruskah mereka berbagi UserName = John -nilai kunci yang umum? Bagaimana jika UserName digunakan oleh Perintah ketiga?
Bagaimana saya bisa meningkatkan desain ini? Terima kasih!
class DIParameters {
public:
/**
* Parameter setter.
*/
virtual void setParameter(std::string key, std::string value) = 0;
/**
* Parameter getter.
*/
virtual std::string getParameter(std::string key) const = 0;
virtual ~DIParameters() = 0;
};
class DIOperation {
public:
/**
* Visit before performing execution.
*/
virtual void visitBefore(DIParameters& visitee) = 0;
/**
* Perform.
*/
virtual int perform() = 0;
/**
* Visit after performing execution.
*/
virtual void visitAfter(DIParameters& visitee) = 0;
virtual ~DIOperation() = 0;
};