1. Силна кохезия
а) Определение – Всеки клас върши точно 1 добре определена функционалност
б) Постига се чрез разделяне на кода в повече методи/класове
Добър пример:
Class PrintPages {PrintSinglePage() / PrintPages()}
Лош пример:
Class PrintPagesAndCookMusaka {PrintSinglePage() / PrintPages() / PrepareProducts() / CookProducts() / PrepareCover() / PutCover()}
2. Слаба свързаност
а) Определение - Отделните класове и методи са независими един от друг и промяната на 1 клас/метод не влияе на промяната на останалите.
б) Постига се чрез добавяне на параметри.
Добър пример:
Class CreateHero {IsAllowed(buildings) / CreateHero(resources, time) / MakeUpgrades(buildings, resources, time)}
Лош пример:
Class CreateHero {CreateHero(upgrades, buildings, resources,time)}