Nastavení několika vlastností třídě   zodpovězená otázka

C#, Architektura, .NET Tips

Chci se zeptat, jak nastavujete případ, kdy jedna třída "umí" několik vlastností, které spolu nějak souvisí?

Používáte tzv. Marker Interfaces, kde implementujete prázdná rozhraní, jako třeba takto:


class Person : ISwimmable, IRunnable, IJumpable
{
}

class Fish : ISwimmable
{}

Nebo atributy:


[Feature(CanSwim = true, CanRun = true, CanJump = true)]
class Person
{
}

[Feature(CanSwim = true)]
class Fish
{}

případně


[Feature(CanSwim = true)]
[Feature(CanRun = true)]
[Feature(CanJump = true)]
class Person
{
}

[Feature(CanSwim = true)]
class Fish
{
}

Případně používáte třeba Enum v atributu, s atributem Flags?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Sory chyba, odpověděl jsem do jiného vlákna.

Nicméně, jsem toto jednou použil a posloužil Interface

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Kdyby se jednalo o jednu věc, tak klidně interface použiju, ale implementovat třeba 4 se mi u jedné třídy nechce. Spíš mě jenom zajímalo, jestli to někdo řeší nějak elegantněji. Zatím to mám implementované tím 2. způsobem přes enum s atributem flags.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obecně těžko říct, bude hodně záležet na scénáři tj. na tom proč potřebujeme poznávat, co daná třída umí, a jak s touto informací potřebujeme dále nakládat.

Nicméně v praxi mnoho frameworků používá označení tříd vlastními atributy, ale s označováním tříd pomoci interface (který jinak žádnou jinou funkci neplní, protože neimplementuje žádnou metodu ani vlastnost) jsem se co si vzpomínám v praxi nikdy nesetkal.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslel jsem si, že je to jedna z těch otázek, na kterou není jednoznačná odpověď.

Konkrétně jsem toto použil v případě, kdy dělám program pro tvorbu UML diagramů a potřebuji vymezit, jaké typy objektů půjdou propojovat jakými typy asociací. Použil jsem variantu s atributy a běhá to v pořádku, takže ani není moc důvodů to měnit.

Jak jsem psal, jenom mě zajímalo, jestli někdo používá nějaké elegantnější řešení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Thanks, it is helpful for me.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback