第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

單一職責(zé)原則和代碼可讀性

單一職責(zé)原則和代碼可讀性

PHP
繁花不似錦 2022-09-17 21:54:15
在試圖堅(jiān)持單一責(zé)任規(guī)則的同時(shí),我的課程已經(jīng)開(kāi)始看起來(lái)像這樣$productImage = new ProductImage(// holds all rules for product image only                    new ImageFile( // makes sure given file is an image file                        new ReadableFile( // checks given item is a readable file / permissions check                            new UploadedFile( // validates given file is uploaded file                                new FilePath( // validates given string is a valid file path                                    new Path( // validates for string to be a path                                        new NonEmptyString( // given string is not empty                                            '/tmp/xyzk7kjnbrukhg'                                        )                                    )                                )                            )                        )                    )                );這只是一個(gè)示例。從表面上看,它看起來(lái)很酷,因?yàn)樗峁┝朔浅:?jiǎn)單且可測(cè)試的類。但是正如您可以注意到代碼的可讀性或可用性一樣。我需要編寫(xiě)無(wú)數(shù)行代碼,甚至需要處理上傳文件的簡(jiǎn)單初始化(如上面的代碼所示)。我開(kāi)始覺(jué)得有些不對(duì)勁,我誤解了單一責(zé)任原則的概念。是如何處理每個(gè)類的單一責(zé)任的純OOP,還是我偏離了目標(biāo)?
查看完整描述

1 回答

?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

你完全遠(yuǎn)離()。如何在代碼中完全看不到工作。沒(méi)關(guān)系,你有他們負(fù)責(zé)不同工作的課程??赡苁腔蛭也?,它們是通過(guò)尊重來(lái)實(shí)現(xiàn)的。除了假設(shè)之外,SRP 在代碼中的可見(jiàn)性要低得多。SRPSingle Responsibility PrincipleSRPSRP


在 中,類依賴于其他類。這是完全正常的。 在您的代碼中完全可見(jiàn)。但是你不能像構(gòu)建復(fù)雜結(jié)構(gòu)時(shí)那樣通過(guò)構(gòu)造函數(shù)方法來(lái)維護(hù)。這應(yīng)該是以下方式的一些內(nèi)容:OOPDependency InjectionDependency Injection


<?php


// given string is not empty

$nonEmptyString = new NonEmptyString('/tmp/xyzk7kjnbrukhg');


// validates for string to be a path

$path = new Path($nonEmptyString);


// validates given string is a valid file path

$filePath = new FilePath($path);


// validates given file is uploaded file

$uploadedFile = new UploadedFile($filePath);


// checks given item is a readable file / permissions check

$readableFile = new ReadableFile($uploadedFile);


// makes sure given file is an image file

$imageFile = new ImageFile($readableFile);


// holds all rules for product image only

$productImage = new ProductImage($imageFile);

但這也不是正確的方法。要以正確的方式執(zhí)行此操作,您需要使用 。 實(shí)際創(chuàng)建其他對(duì)象。假設(shè)您有一個(gè)工廠方法模式實(shí)現(xiàn),并且該實(shí)現(xiàn)將負(fù)責(zé)創(chuàng)建具有依賴項(xiàng)的對(duì)象。假設(shè)您在以下代碼段中導(dǎo)入了所需的所有類:Factory Method Design PatternFactory Method Design PatternImageFileProductImageImageFile


<?php


class ImageFileFactory implements FactoryInterface

{

    public static function make($string)

    {

        // given string is not empty

        $nonEmptyString = new NonEmptyString($string);


        // validates for string to be a path

        $path = new Path($nonEmptyString);


        // validates given string is a valid file path

        $filePath = new FilePath($path);


        // validates given file is uploaded file

        $uploadedFile = new UploadedFile($filePath);


        // checks given item is a readable file / permissions check

        $readableFile = new ReadableFile($uploadedFile);


        // makes sure given file is an image file

        return new ImageFile($readableFile);

    }

}



// Creates ImageFile instance

$imageFile = ImageFileFactory::make('/tmp/xyzk7kjnbrukhg');


// holds all rules for product image only

$productImage = new ProductImage($imageFile); 

哦!我有一個(gè)寫(xiě)在媒體上.如果你可以讀它。這是戰(zhàn)略調(diào)整計(jì)劃的鏈接SRP


希望這會(huì)幫助你!祝您編碼愉快!


查看完整回答
反對(duì) 回復(fù) 2022-09-17
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)