2008-08-20 2 views
3

У меня есть группа взаимосвязанных классов, которые все переопределены для создания конкретной реализации. Мне интересно, стоит ли прикладывать взаимосвязанные подклассы в пространстве имен.Неплохо ли представить иерархию наследования в структуре пространства имен?

Для целей примера, рассмотрим следующие пространства имен и классы:

namespace Protocol 
{ 
    public abstract class Message { } 
    public abstract class Driver { } 
} 
namespace Protocol.Tcp 
{ 
    public class TcpMessage : Message { } 
    public class TcpDriver : Driver { } 
} 
namespace Protocol.Ftp 
{ 
    public class FtpMessage : Message { } 
    public class FtpDriver : Driver { } 
} 

Каков наилучший способ структурирования пространств имен? Кажется неизбежным выявить наследование в пространстве имен, поскольку базовые классы действительно не принадлежат ни в пространстве имен Protocol.Tcp, ни в пространстве имен Protocol.Ftp.

ответ

6

Я думаю, что вы, возможно, слишком беспокоитесь!

Имеет ли смысл логически? Вы знаете, где найти свой код в пространствах имен?

Я бы предпочел видеть кодовый как выше с небольшим количеством классов, имеющих отношение к имени с иерархией, чем один большое пространством имен, где все взаимосвязаны ..

Помните, Пространство имен есть для точных это, чтобы организовать свою кодовую логически

То, что вам кажется логичным :)

EDIT:

в качестве примера:

using System.Data; 
using System.Data.Sql; 

;)

0

Если бы это было мне, я бы определил 2 пространств имен:

Protocol 

и

Protocol.Driver 

Разделив пространство имен, как это отделяет ваш "код библиотеки" против вашего «исполняемого/тестового кода». Я также создаю свои пространства имен в соответствии с структурой каталогов; он даст логику структуре ваших программ и кодовым файлам. (возможно, вы уже это сделали ...)

1

Оригинальные теги показывают, что это сообщение о C# - поэтому множественное наследование является нерелевантности - вы не можете умножить наследование на C#.

Возможно, вам стоит подумать над определением некоторых интерфейсов, определяющих основные договоры Message и Driver, а затем вы можете почувствовать себя немного свободным, чтобы использовать структуру пространства имен для имитации технологических различий.