- Bir takım işleri uygularken kontrol/performans sağlayabilmek için UnitOfWork desenini kullanırız, bu desen tüm işlerin bir seferde yapılması/yansıtılması görevini üstlenir database trancsaction yapısı en bilinen ve yaygın örneğidir, database işlemlerini anlık uygulamak yerine o session'da ki(using vs.) işlemler toplanır ve session biterken yada uygulanmasını istediğimiz anda gerçekleştirilir.
- İşi yapan method class yada modulün tek bir sorumluluğu olması demektir, eğer o sorumluluk harici bir değişiklik yapılması gerekiyor ise Single responsibility prensibini doğru uygulayamamışız demektir, doğru uygulanmış olması her bir sorumluluk için onu gerçekleştiren bir method class yada module olması demektir.
- Bir uygulamaya yeni bir özellik eklerken mimari, tasarımsal yada temelden bir değişikliğe gereksinim duymaması o uygulamanın gelimeye açık ama değişime kapalı olduğunu yani uygulama tasarlanırken değişiklik yapmaya gerek duymadan nasıl geliştirme yapılacağının düşünüldüğü anlamına gelir.
- Bir class yada interface'i implement eden nesne'nin o class yada interface'de ki tüm özellikleri gerçekleştirmesi yani özelliği taşıyor olması gerektiğidir, burada yerine geçen nesne'nin bazı özelliklerini gerçekleştirememesi yanlış soyutlama yapıldığı anlamına gelebilir.
- Interfaceleri tasarlarken iş kapsamını belirleyip işlerin farklılaştığı noktalarda interfacelerin ayrılması gerekir, işler ayrıştıkça yeniden kullanılabilirlik ve anlaşılabilirlik artacaktır, kavramları birbirinden ayırmak ve sorumlulukları dağıtmak gerekir.
- Üst seviye işler yapan class'ın alt seviye iş yapan classlara doğrudan bağımlılığını tersine çevirmek için alt seviye işler yapan class'ları soyutlayarak (bkz:interface) üst seviye işler yapan classların alt seviyeye bağımlılığını tersine çevirmiş oluruz, bu da bize alt seviyede ki bir değişiklik üst seviyeyi etkilememiş olur.