مثال برای اصل Dependency inversion principle

پرسیده شده
فعالیت 1122 روز پیش
دیده شده 402 بار
0

باسلام و عرض خسته نباشید

لطفا در صورت امکان مثال پایگاه داده ای را که استاد برای اصل Dependency inversion principle گفتند با کد توضیح بدید تا بهتر متوجه نحوه استفاده از این اصل بشیم.

فایل پیوست

محمد گازری
محمد گازری

11 فروردین 00

1
حذف شده

سلام واحترام

به صورت کلی بخوام بهتون بگم اینکه که کلاس فرزند نباید تعیین کنه که چی میخواد و تزریق وابستگی باید از بیرون به داخل باشه.

مثال:

<?php

class UserRegistration
{

    public function store(array $data)
    {   
        $mysql = new Mysql();

        $created_user = $mysql->store($data);

        if($created_user)
            return true;

    }
}

$userRegistration = new UserRegistration();

$userRegistration->store([
    'mobile' => '405485436045',
    'full_name' => 'test'
]);

توی کد بالا ما موقعی که بخوایم یه کاربر رو ذخیره سازی کنیم اومدیم داخل متد store برای مثال از دیتابیس mysql یه شئ ساختیم و متد store رو صدا زدیم تا ذخیره کنه، در حقیقت کلاس UserRegistration داره تعیین میکنه که دقیقا چه دیتابیسی میخواد، این روند باید برعکس باشه و ما باید بهش بگیم که باید از چی استفاده کنی

راه حل اینکه ما بیایم از contractor استفاده کنیم تا وابستگی از بیرون تزریق بشه

 برای مثال:

 

class UserRegistration
{

    protected $database;

    public function __construct(Database $database)
    {
        $this->database = $database;
    }

    public function store(array $data)
    {   
        $created_user = $this->database->store($data);

        if($created_user)
            return true;
    }
}

$userRegistration = new UserRegistration(new Mysql());

$userRegistration->store([
    'mobile' => '405485436045',
    'full_name' => 'test'
]);

برای من داخل کلاس UserRegistation مهم نیست که چه دیتابیسی هست و فقط از آبجکت دیتابسی که به من موقع new کردن از کلاسم بهم پاس دادن رو متد store رو صدا میزنم

برای اینکه حالا مطمئن بشیم که همه دیتابیس های ما متد store رو دارن باید از interfaceها استفاده کنیم و داشتن متدهای الزامی برای هر دیتابیس مثل store - delete - update - select, رو یه قرار داد کنیم’’

 

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

11 فروردین 00