Pytania otagowane jako encapsulation

6
Łączenie metod a hermetyzacja
Istnieje klasyczny problem OOP łączenia łańcuchów metod z metodami „pojedynczego punktu dostępu”: main.getA().getB().getC().transmogrify(x, y) vs main.getA().transmogrifyMyC(x, y) Pierwszy wydaje się mieć tę zaletę, że każda klasa odpowiada tylko za mniejszy zestaw operacji i czyni wszystko o wiele bardziej modułowym - dodanie metody do C nie wymaga żadnego wysiłku w A, …

5
Czy mogę używać wstrzykiwania zależności bez przerywania enkapsulacji?
Oto moje rozwiązanie i projekty: BookStore (rozwiązanie) BookStore.Coupler (projekt) Bootstrapper.cs BookStore.Domain (projekt) CreateBookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs BookStore.Infrastructure (projekt) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (projekt) Global.asax BookStore.BatchProcesses (projekt) Program.cs Bootstrapper.cs : public static class Bootstrapper.cs { // I'm using SimpleInjector as my DI Container public static void Initialize(Container container) { container.RegisterManyForOpenGeneric(typeof(ICommandHandler<>), typeof(CreateBookCommandHandler).Assembly); …


1
Używanie klas znajomych do enkapsulacji funkcji prywatnych członków w C ++ - dobra praktyka czy nadużycie?
Zauważyłem więc, że można uniknąć umieszczania funkcji prywatnych w nagłówkach, wykonując coś takiego: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } …


5
Czy zawsze powinienem całkowicie zawierać wewnętrzną strukturę danych?
Proszę rozważyć tę klasę: class ClassA{ private Thing[] things; // stores data // stuff omitted public Thing[] getThings(){ return things; } } Ta klasa udostępnia tablicę, której używa do przechowywania danych, każdemu zainteresowanemu kodowi klienta. Zrobiłem to w aplikacji, nad którą pracuję. Miałem ChordProgressionklasę, która przechowuje sekwencję Chords (i robi …




5
Jak sprawić, by oczywista była dostępność funkcji z zewnątrz?
To jest pytanie specyficzne dla C. Staram się zachować wszystko, co możliwe, w granicach jednostki tłumaczeniowej, udostępniając tylko kilka funkcji w .hpliku. To znaczy, daję staticpowiązanie z obiektami na poziomie plików. Teraz kilka funkcji musi być wywoływanych przez inne moduły, ale nie bezpośrednio. Mój moduł / plik / jednostka tłumacząca …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.