C>Теперь вдруг захотел лампочку с мотором да еше и так чтоб EnergyConsumtionPerSecond было разное.
Я не очень понял — а что это за хрень такая, которая является и лампочкой и мотором одновременно??
Может тебе нужно аггрегировать экземпляры лампочки и мотора?
Здравствуйте, Igor Trofimov, Вы писали:
iT>Я не очень понял — а что это за хрень такая, которая является и лампочкой и мотором одновременно?? iT>Может тебе нужно аггрегировать экземпляры лампочки и мотора?
1. Светящийся моторчик.
2. Вращающаяся лампочка.
При некотором напряжении фантазии можно расширить этот список.
Здравствуйте, LCR, Вы писали:
LCR>2. Вращающаяся лампочка.
Это что-бы автоматически выкручиваться, падать и разбиваться?
Так, что еще более вероятно, что и лампочка и моторчик встроены, и являются лишь составными частями какой-то занимательной системы, которая заставляет лампочку крутиться по какой-то траектории
Теперь вдруг захотел лампочку с мотором да еше и так чтоб EnergyConsumtionPerSecond было разное.
class Somthing
{
float EnergyForLamp;
float EnergyForMotor;
public float EnergyConsumtionPerSecond
{
set{а вот тут то и проблема - чего именно хотели утановить.для лампы или мотора}
}
}
я чего то упустил,или просто bad design?
28.04.05 19:21: Перенесено модератором из '.NET' — AndrewVK
C>Теперь вдруг захотел лампочку с мотором да еше и так чтоб EnergyConsumtionPerSecond было разное.
C>я чего то упустил,или просто bad design?
Возможно, Вы хотите иметь не объект, который одновременно является и лампочкой, и мотором, что получается, если реализовать оба интерфейса, ILampa и IMotor,
а именно "мотор с лампочкой", тогда можно попробовать так:
class Cas : IMehanical
{
private ILampa lampa;
private IMotor motor;
public float EnergyConsumtionPerSecond
{
get
{
return lampa.EnergyConsumtionPerSecond + motor.EnergyConsumtionPerSecond;
}
}
//Если хочется иметь доступ к лампе и моторуpublic ILampa Lampa
{
get { return lampa; }
}
public IMotor Motor
{
get { return motor; }
}
}
Примерно такое уже предложили.
Но мне тут очень не нравится thow, а главное это требывало заранее подумать
что лама и мотор могут использоватся вместе и добавить к ним new.
а если бы они были не мои и исходников не было?
впрочем видимо это уже мои заморочки,и попытки продумать все и вся.
Ага. То что я привел это может использоваться только как некоторый выход из создавшейся ситуации, когда другого не остается (пока писал уже прошел флейм, я не обратил внимание). krasin абсолютно прав что для данного композитного класса нужно разделить интерфейсы. Исключения в интерфейсах — это очень неправильная вещь.