سؤال التصميم: هل يجب على العميل إنشاء الجلسة والمقبس؟
-
26-09-2019 - |
سؤال
لدي ثلاثة فصول:
- عميل
- جلسة
- قابس كهرباء
كل من Session & Socket DepeAnd على العميل لإنشاء كلا الكائنين.
يتم إنشاء جلسة Depoesends على مأخذ التوصيل وليس هناك مآخذ بدون جلسة. هل يجب أن يكون لدى العميل وظيفة تنشئ جلسة بخصورة ومقبس خاص؟
ألا ينتهك قانون ديميتر؟
تحرير: الكود الحالي:
class Client
{
private:
// Connection details
public:
shared_ptr<Socket> createSocket(); // returns a new socket if the connection is opened
}
class Session
{
public:
Session(Client &); // Accepts a client and gets a socket for i/o to the server
}
الآن يخبرني شيء ما أنه لا ينبغي أن تكون الجلسة مسؤولة عن الحصول على المقبس من العميل وأنه يجب على العميل إنشاء الجلسة.
هل انا على حق؟
المحلول
هذا يعتمد. كل ما تخبرنا به Client
هل يخلق كلاهما Session
و Socket
, ، لا شيء آخر.
إذا Client
يحتاج إلى استخدام كليهما ، ثم لا يوجد انتهاك. إذا كان يخلق فقط Socket
من أجل توفيره ل Session
, ، أود أن أقول هذا هو انتهاك و Session
يجب ان تحصل Socket
بحد ذاتها.
لا تنتمي إلى StackOverflow