İçeriğe geç

Open Closed Principle nedir ?

Merhabalar bu yazımda diğer bir yazılım prensibi olan Open Closed Principle (Açık Kapalı Prensibi) hakkında bilgi vereceğim.

Tüm prensipler gibi bu prensibimizde yazılım dünyasında önemli bir yer almakta. Bu prensibin amacı kısaca “gelişime açık, değişime kapalı” sistematiğinde sınıflar tasarlamamız mantığını oluşturmakta.

Bunun önemi yazdığımız kod üzerinde daha sonra ekleme yapılacak nesneler için değişim yaratmadan modüler bir şekilde koda yeni nesneleri entegre edebilmemiz gerekli. Bu işlemleride oop programlamanın güzelliklerinden yararlanarak modelleyeceğiz.

Bu prensibi kullanarak modellediğimiz zaman projelerde yeni eklenecek olaylar rahatlıkla entegre olabilir ve zamansal açıdan büyük avantajlar sağlar.

Aşağıdak OCP prensibi mantığıyla yazdığım basit bir senaryoyu görebilirsiniz.

import Foundation

protocol Employee {
    func getEmployeeDetails(id: Int) -> [String:AnyObject]?
}

class Manager: Employee {
    func getEmployeeDetails(id: Int) -> [String : AnyObject]? {
        print("Manager Details \(id) []")
        return nil
    }
}

class Developer: Employee {
    func getEmployeeDetails(id: Int) -> [String : AnyObject]? {
        print("Developer Details \(id) []")
        return nil
    }
}

class HumanResources: Employee {
    func getEmployeeDetails(id: Int) -> [String : AnyObject]? {
        print("Human Resources Details \(id) []")
        return nil
    }
}

Yukarıda basit bir şirket çalışan modellemesi bulunmakta. Buradaki yapıda gördüğünüz gibi her çalışan sınıfının kendi getEmployeeDetails methodu kullanılacak. Böylelikle gereksiz if bloğu kullanılarak çalışan sınıfını kontrol edip ardından çalışan bilgisi döndürmemize gerek kalmamış oluyor ve prensibimizin mantığı ilede uyuşmuş oluyor. Yeni bir çalışan sınıfı eklendiği zaman yukardaki sınıflarda hiç bi değişiklik yapmanıza gerek kalmıyor.

 

 

Kategori:Design Principles

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca