Single Responsibility Prensibi(SRP) Nedir

SOLID prensiplerinin S harfi olan Single Responsibility; Bir sınıfın, bir metotun tek bir sorumluluğu (amacı) vardır. Bu prensibi uygulamak, kodunuza esneklik sağlamaktadır.
( Herbir nesnenin tek bir görevi vardır. )

Örneğimizi inceleyelim.

    class Vehicle
    {
        public string Color { get; set; }
        public string Brand { get; set; }
        public void Save()
        {
            //Save Vehicle
        }
    }

Single Responsibility Prensibi örneğimizde ihlal edilmiştir. Vehicle sınıfının helper sınıfı ve entity sınıfı davranışını göstermektedir. Tek bir sorumluluğu yoktur.

Araba, Otobüs gibi sınıfların olduğunu varsayarsak interface kullanabiliriz. Car ve Bus sınıfları, IVehicle arayüzünden(interface) implemet edilir.

    interface IVehicle
    {
        string Color { get; set; }
        string Brand { get; set; }
    }
    class Car : IVehicle
    {
        private string _color;
        private string _brand;
        public string Color
        {
            get { return _color; }
            set { _color = value; }
        }
        public string Brand
        {
            get { return _brand; }
            set { _brand = value; }
        }

    }
    class Bus : IVehicle
    {
        private string _color;
        private string _brand;
        public string Color
        {
            get { return _color; }
            set { _color = value; }
        }
        public string Brand
        {
            get { return _brand; }
            set { _brand = value; }
        }

    }

Save metotu ( SRP presibine göre tek bir amacı olmalı! ), veritabanına IVehicle arayüzünden extend edilen sınıfların örneğini(instance) kayıt etmek için kullanılır. DB sınıfında tanımlarız. (Veritabanına kayıt işleminde de interface kullanabilirsiniz.)

    class DB
    {
        public void Save(IVehicle vehicle)
        {
            Console.WriteLine("Save Color : " + vehicle.Color + " and Brand : " + vehicle.Brand);
        }
    }

Kodumuzun Son Hali :

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Car car = new Car();
            car.Color = "Red";
            car.Brand = "Mazda";

            DB db = new DB();
            db.Save(car);
            Console.ReadKey();
        }
    }
    interface IVehicle
    {
        string Color { get; set; }
        string Brand { get; set; }
    }
    class Car : IVehicle
    {
        private string _color;
        private string _brand;
        public string Color
        {
            get { return _color; }
            set { _color = value; }
        }
        public string Brand
        {
            get { return _brand; }
            set { _brand = value; }
        }

    }
    class Bus : IVehicle
    {
        private string _color;
        private string _brand;
        public string Color
        {
            get { return _color; }
            set { _color = value; }
        }
        public string Brand
        {
            get { return _brand; }
            set { _brand = value; }
        }

    }
    class DB
    {
        public void Save(IVehicle vehicle)
        {
            Console.WriteLine("Save Color : " + vehicle.Color + " and Brand : " + vehicle.Brand);
        }
    }
}

Çıktı :

single responsibility prensibi nedir
single responsibility prensibi nedir

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir