Я пытаюсь улучшить свой стиль программирования. Рассмотрим следующий сценарий:
Предположим, я хочу определить настраиваемый серверный элемент управления ASP.Net Album. Цель состоит в том, чтобы позволить пользователю выбрать тип альбома, а все остальное будет выполняться элементом управления.
Я подумал о двух подходах:
1- Определите интерфейс IAlbum и определите класс (который реализует IAlbum) для каждого типа альбома. Например:
public class FlashAlbum : IAlbum
{
// Implement IAlbum Methods...
// FlashAlbum-Specific Properties/Methods.
}
public class JSAlbum : IAlbum
{
// Implement IAlbum Methods...
// JSAlbum-Specific Properties/Methods.
}
Итак, если пользователю нужен флэш-альбом, он должен явно создать объект FlashAlbum. что-то вроде:
var myFlashAlbum = new FlashAlbum(/*FlashAlbumParameters*/);
var myJSAlbum = new JSAlbum(/*JSAlbumParameters*/);
Проблема в том, что я не хочу, чтобы пользователю приходилось иметь дело с несколькими типами альбомов. Прочтите ниже, чтобы понять, что я имею в виду.
2- Определите IAlbum, определите класс (который реализует IAlbum) для каждого типа альбома (как указано выше) и определите класс Album
, который не 1175363] реализовать IAlbum. Он используется для создания экземпляров альбома в его конструкторе (заводской шаблон). Определение EnumAlbumTypes:
Public Enum AlbumTypes
{
FlashAlbum,
JSAlbum
}
Теперь определите конструктор для родительского класса альбома, который принимает параметр типа EnumAlbumTypes и создает соответствующий альбом на основе этого параметра. Я предпочитаю этот метод. Но я не очень хорошо знаком с заводским шаблоном. Я хочу, чтобы пользователь создавал такие альбомы, как:
var myFlashAlbum = new Album(AlbumTypes.FlashAlbum);
// Now set FlashAlbum custom properties.
var myJSAlbum = new Album(AlbumTypes.JSAlbum);
// Now set JSAlbum custom properties.
Как лучше всего достичь этого?
Спасибо и извините за длинный пост.