Split Údaje třída přístup do čtečky a spisovatel nebo zkombinovat?

hlasů
4

To by mohlo být na „discussy“ straně, ale já bych opravdu rád slyšel váš názor na toto téma.

Dříve jsem často psán pro přístup k datům třídy, které ovládal i čtení a psaní, což často vedlo ke špatné pojmenování, jako FooIoHandler atd pravidlo, že třídy, které jsou těžko jméno pravděpodobně špatně navrženy nasvědčuje tomu, že to není dobré řešení.

Tak jsem nedávno začala rozdělovat přístup k datům do FooWriter a FooReader, což vede k hezčí jmen a poskytuje některé další flexibilitu, ale zároveň jsem se trochu jako udržet pohromadě, v případě, že třídy nejsou velké.

Je separační čtecí / zapisovací lepší design, nebo bych měl zkombinovat? Kdybych je měl spojit, co to sakra mám název třídy?

Díky / Erik

Položena 27/08/2008 v 04:02
uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
2

ORM může být váš nejlepší řešení.
Nebo použít typ úložiště vzor, s „thingContext“ objekt, který je zodpovědný za státní vytrvalost.

Osobně používám Active Record, kde ušetřit logiku se peče do základní třídy, ale já odjíždím to ve prospěch NHibernate stylu úložiště vzor. Příspěvek na DDD a testování věci bez db je velmi příjemné mít v rámcové typu situace, kdy je moje obchodní logiky nyní získává trakci na novém uživatelském rozhraní.

Odpovězeno 27/08/2008 v 04:12
zdroj uživatelem

hlasů
3

Já jsem teď s použitím LINQ to SQL. To řeší problém zcela.

Nicméně, pokud nemáte tuto možnost (nebo nějaký podobný nástroj ORM), nevidím žádný důvod k separaci čtení metody / zápisu. To jen přidává více tříd a komplikuje přístup k datům. Vždycky jsem navržen to následujícím způsobem:

  1. Složka / Business Object: Car
  2. Data Access, který obsahuje statické metody čtení a zápisu: CarDB

Příklad použití:

Car car = new Car();
car.Manufacturer = "Toyota"
car.Model = "Camry"
car.Year = 2006;
car.CarID = CarDB.InsertCar(car)
car.OwnerID = 2;
CarDB.UpdateCar(car);

To také dává smysl pro přístup k datům, kdy obě čtení a zápisu je třeba provést v rámci jedné transakce. Pokud jste se rozešli tříd, kde by to šlo?

Odpovězeno 27/08/2008 v 04:13
zdroj uživatelem

hlasů
3

Ignorování ORM (ne proto, že jsem buď pro nebo proti ní) bych se udržet je ve stejné třídě. Oba jsou aspekty jediné odpovědnosti a oddělovat je prostě vypadáte na dvou místech, kde nemůžu myslet na dobrý důvod byste chtěli udělat.

Odpovězeno 27/08/2008 v 07:23
zdroj uživatelem

hlasů
0

Když možnost volby I obecně podtřídy čtenáře k vytvoření spisovatel.

Odpovězeno 07/10/2008 v 23:17
zdroj uživatelem

hlasů
1

Něco, co čte a zapisuje do obchodu backend by se dalo nazvat datový přístupový nebo ReaderWriter nebo Io, nebo Store.

Tak jak je to jeden z:

  • FooDataAccessor
  • FooAccessor
  • FooReaderWriter
  • FooRW
  • FooIO
  • FooStore
  • FooStorage
Odpovězeno 04/05/2013 v 15:00
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more