Запитання з тегом «encapsulation»

6
Метод ланцюга проти інкапсуляції
Існує класична проблема OOP методу ланцюга методів проти методів "єдиної точки доступу": main.getA().getB().getC().transmogrify(x, y) проти main.getA().transmogrifyMyC(x, y) Перший, мабуть, має перевагу в тому, що кожен клас відповідає лише за менший набір операцій, і робить все набагато більш модульним - додавання методу до C не вимагає жодних зусиль в A, B …

5
Чи можу я використовувати ін'єкційну залежність без порушення інкапсуляції?
Ось моє рішення та проекти: BookStore (рішення) BookStore.Coupler (проект) Bootstrapper.cs BookStore.Domain (проект) Створити BookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs BookStore.Infrastructure (проект) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (проект) Global.asax BookStore.BatchProcess (проект) 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<>), …


1
Використання друзів класів для інкапсуляції функцій приватних членів на C ++ - хороша практика чи зловживання?
Тому я помітив, що можна уникнути введення приватних функцій у заголовки, роблячи щось подібне: // 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
Чи слід завжди повністю інкапсулювати внутрішню структуру даних?
Врахуйте цей клас: class ClassA{ private Thing[] things; // stores data // stuff omitted public Thing[] getThings(){ return things; } } Цей клас виставляє масив, який він використовує для зберігання даних, будь-якому зацікавленому коду клієнта. Я це робив у додатку, над яким працюю. У мене був ChordProgressionклас, який зберігає послідовність …

4
Чи страждаю я від надмірного використання капсуляції?
Я помітив щось у своєму коді в різних проектах, що здається мені кодовим запахом і чимось поганим, але я не можу з цим впоратися. Намагаючись написати "чистий код", я схильний надмірно використовувати приватні методи, щоб полегшити читання коду. Проблема полягає в тому, що код справді чистіший, але його також важче …

4
Вкладені класи: Корисний інструмент чи порушення інкапсуляції?
Тож я все ще на паркані щодо того, варто мені чи ні використовувати їх. Я відчуваю, що це надзвичайно порушення інкапсуляції, проте я вважаю, що мені вдається досягти певної міри інкапсуляції, отримуючи при цьому більшу гнучкість у своєму коді. Попередні проекти Java / Swing Я певною мірою використовував вкладені класи, …

4
Чи може перейменування методу зберегти інкапсуляцію?
Я читав цю сторінку про те, коли геттери / сетери виправдані, і ОП дав такий зразок коду: class Fridge { int cheese; void set_cheese(int _cheese) { cheese = _cheese; } int get_cheese() { return cheese; } } void go_shopping(Fridge fridge) { fridge.set_cheese(fridge.get_cheese() + 5); } У прийнятій відповіді зазначено: До …

5
Як зробити очевидним, що функція доступна ззовні?
Це специфічне C питання. Я намагаюся зберегти все можливе в межах одиниці перекладу, відкриваючи лише кілька функцій через .hфайл. Тобто я надаю посилання на staticоб’єкти файлового рівня. Тепер пару функцій потрібно викликати іншими модулями, але не безпосередньо. Мій модуль / файл / блок перекладу підписується на інші модулі, передаючи вказівник …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.