Здравствуйте, Alxndr, Вы писали:
A>Не было ли лучше в данном конкретном случае вообще воспользоваться "виртуальным конструтором"?
Хочешь создать идеальную систему?
Можешь использовать "вирутальный конструктор". Но он ни чем не лучше abstract factory. Если очень хочется, то сделай класс WindowsButton private, а потом в WindowsFactory используй Activator.CreateInstance вместо new.
Методов много. И чем больше ты их знаешь, тем больше ты сможешь спрятать, и тем больше будет твой уровень
Здравствуйте, Mishka, Вы писали:
M>Здравствуйте, Alxndr, Вы писали:
A>>Не было ли лучше в данном конкретном случае вообще воспользоваться "виртуальным конструтором"?
M>Хочешь создать идеальную систему?
Нет — уровень пока не позволит
.
M>Можешь использовать "вирутальный конструктор". Но он ни чем не лучше abstract factory. Если очень хочется, то сделай класс WindowsButton private, а потом в WindowsFactory используй Activator.CreateInstance вместо new.
Спасибо.
M>Методов много.
Но знаю я их преимущественно только для С++ (способ-то проектирования все равно связан с языком реализации).
Фактически, я так "завуалированно" выпытывал, как с этим в .Net (или в Java) бороться.
M>И чем больше ты их знаешь, тем больше ты сможешь спрятать, и тем больше будет твой уровень
Сегодня мой уровень вырос на 2 метода
Вместо того, чтобы вводить параллельные иерархии и писать самому все эти контролы, вроде Button, не лучше ли было воспользоваться строителем?
К примеру так: есть неабстрактные Document, Button, ComboBox, которые содержат данные и события, но (как и прежде) не содержат реализацию. А потом вызвать такую вещь:
Page page = webDocumentBuilder.Render(document);
или
Form form = formsDocumentBuilder.Render(document);
получив на выходе страницу или форму со стандартными контролами, настроенными и подписанными в соответствии со структурой и настройками документа? Как я понимаю, пользователю (ну, программисту), не нужно иметь непосредственный доступ к элементам построенной конкретной формы или страницы? Ну а даже если и нужно, можно ведь использовать мост (Bridge), который будет писать/читать в построенную форму (страницу)!
к примеру так:
public class Button
{
...
private ButtonBridge targetButton;
...
private string name;
public string Name
{
get
{
return this.name;
}
set
{
if(this.name != value)
{
this.name = name;
if(this.targetButton != null)
this.targetButton.SetName(value);
}
}
}
...
}
может, я упускаю какие-то еще детали? Хотелось бы получить ответ в свете работы твоего существующего решения.
Здравствуйте, Mishka, Вы писали:
M>Можно. Я ж не утверждаю, что это единственный вариант построения framework. Всё зависит от того, чего ты этим добъёшься.
А я и не про недостаток воображения
Я хотел узнать, чем обосновано решение и не поменялся ли взгляд после того, как система поработала некоторое время.