solid-principles

    1熱度

    1回答

    我有php應用程序,它不符合SOLID原則,但是整個團隊嘗試對變化進行重構代碼。我必須添加全局日誌(存儲在其中一個數據庫中),保存在模型更新的創建中。該模型不使用ORM。第一種解決方案:在模型上創建靜態記錄器並調用後: public function save(ObjectEntity $entity) { // Some code to prepare entity $th

    2熱度

    1回答

    由於每接口分離原則 客戶不應該被強迫實現一個接口的不必要的方法 ,所以我們應該確定接口的方式使接口具有邏輯分離。 但是在Java 8中引入的默認方法概念提供了在Java接口中提供默認方法實現的靈活性。 看來Java 8已經提供了增強接口的可行性,以使某些方法與其核心邏輯無關,但具有一些默認或空的實現。 它不違反分離的擔憂嗎?思考?

    1熱度

    2回答

    單一職責原則(SRP): - 每個班級都應該承擔一個責任。基本上,應該有一個單一的理由來改變。我不確定 最後的聲明究竟意味着什麼。我的解釋是,設計類的方式應該有一個單一的理由來改變,因爲每種方法都是一種行爲,因此也是一種理由。那是對的嗎?如果不是什麼確切的原因定義? 考慮一個股票交易所繫統,其中大部分開發者提出設計,其中StockService.java同時具有買入和賣出方法。這裏將有兩方面的原因

    2熱度

    1回答

    我有一些類是這樣的: +---+ +---+ | L | ---uses---> | D | +---+ +---+ | +---+ inherit ----<---- | V | | +---+ +---+ +---<--- | C | +---+ 假設;類L是一個抽象類,並且V和C從它繼承。並且L有類D的財產。 - 對不

    0熱度

    2回答

    我即將實現文檔生成器。我堅持遵循開放原則,這給我帶來了一些麻煩。要求如下: 會有多種文檔類型(即協議,委託書) 會有多種文檔格式(即XML,JSON,HTML,PDF) 各文檔類型需要不同的數據集是存在於該文件(即客戶的詳細資料,plenipotent細節) 由於我的選擇以下開閉原則的,我強烈希望避免使用switch語句。這意味着我需要爲特定類型的文檔和格式類型引入一些抽象和實現。 是否需要提供m

    0熱度

    1回答

    我使用的是從UICollectionView完全相同的單元格設置,但這次是在UITableView中,原因是我使用了可摺疊標題,因此它需要是UITableView。代碼將幾乎完全相同,除了類型將是UITableViewCell而不是UICollectionViewCell,並且xib文件將會不同。我可以以某種方式使這個代碼重新可用於UITableViewCell而不是複製粘貼? class Log

    2熱度

    3回答

    我在程序中有一個設計問題,這是由於abstract基地有一個方法帶有一個位置(因此是可選的)參數。 比方說這個班級是A,方法是void f(x, [y]);。現在,y是可選的,因爲我已經知道一些A的子類將使用它,其中一些不會。 實際的問題是違反了里氏替換原則:在需要y子類我不得不拋出一個異常,如果不提供y,而在A.f(這是未實現的),我不拋出任何異常。 A的設計也不好,因爲我提供了一個方法f,其中

    0熱度

    2回答

    讓我們想象一下,我們有一個名爲Register的類,該類僅註冊用戶,並在驗證未通過時顯示消息。 class Register { function register_user() { // Do Validation, Get message and Show it if faild ... $message = $this->get_me

    0熱度

    1回答

    實踐考慮處理輸入的這3個例子: /*EXAMPLE A*/ public class HandlingInputExampleA { private Label labelFromOtherClass; //injected by setter/constructor private String myText = "hello "; private int my

    1熱度

    2回答

    如果我有一個複雜的任務來解決,我有時最終會遇到一種控制執行的方法。由於空檢查,if語句,調用在類型之間映射的方法等等,這種方法可能變得非常長,我努力使它更簡單。 實施例1 public class A public string MethodA(string stringA) { var fooResult = _fooService.fooMethod(stringA);