国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

學習Java基礎知識:需求

2019-11-18 11:14:34
字體:
來源:轉載
供稿:網友

  我就不明白, 一個簡簡單單的需求分析, 在經過了這么多專家的仔細闡述分析之后,怎么讓大家搞得越來越復雜了?
  
  什么是面向接口? 就是你分析了需求, 根據需求定義了接口, 然后所有東西都圍著這個接口轉.
  
  有人可能覺得一個類通過重構變得那樣太不可接受了. 那么我請問, 你的重構的底線是什么? 類變成什么樣你可以接受? 你那么關心類的實現方法干什么? 你到底是面向接口編程還是面向類編程?
  
  一個模塊X, 它要實現接口I, 然后要讓別人用自己的實例.
  仔細分析, 這里面的需求是什么?
  
  只有一個
  1. X要給外界提供一個實現了I接口的實例.
  
  沒有別的了. 真的, 沒有別的了. 我只要能保證調用者從我這里取得一個I的實例, 我就完成了工作. 你管我是偷來的搶來的?
  
  這個需求要求你必須用X實現I了么?
  它要求你必須每次調用的時候返回不同的實現了么?
  
  它告訴你X不能開始時候實現I, 后來又不實現了么?
  
  同志們, 放下驕傲的直覺, 科學理性地分析一下吧.
  
  通過數學的方法, 從需求1, 你得不出上述得任何結論!
  
  根據這個需求,
  
  java代碼:
  
  1 class X implements I{
  ...}
  2  public X(){}
  3 }
  
  符合要求.
  
  java代碼:
  
  1 class X implements I{
  ...}
  2  public static I instance(){return new X();}
  3 }
  
  符合要求
  
  java代碼:
  
  1 class X{
  ...}
  2  static class Inner implements I{
  ...}
  3  }
  4  public static I instance(){return new Inner();}
  5 }
  
  符合要求.
  
  java代碼:
  
  1 class X{
  ...}
  2  public static I instance(){return GenericI.instance();}
  3 }
  
  符合要求
  
  java代碼:
  
  1 class X{
  ...}
  2  class Inner implements I{
  ...}
  3  }
  4  PRivate static final X singleton = new X();
  5  public static I instance(){return singleton.new Inner();}
  6 }
  
  仍然符合要求.
  
  設計是什么? 就是在分析了需求之后, 保留真正的需求, 剔除一些假想的并不真正存在的假設.什么外部用容器啦, 什么類X不能從implements I變成不implements I啦, 都是你自己的一廂情愿的假設.
  
  假如分析出了這個需求, 誰是最能夠忠實反映這個需求而添加的額外約束最小的? 構造函數還是靜態工廠?
  
  一個假設最小的接口就是最靈活的接口. 什么外部創建邏輯, 什么容器, 這些外部的邏輯沒有理由在一個不靈活的接口上可以做到而在一個更靈活的接口上反而做不到.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海原县| 阆中市| 崇仁县| 白城市| 南和县| 新蔡县| 龙江县| 家居| 黑水县| 临城县| 瑞金市| 张北县| 潞城市| 桂阳县| 元氏县| 莱州市| 绵阳市| 凤翔县| 双城市| 竹山县| 花垣县| 朝阳县| 普兰县| 宣城市| 池州市| 商河县| 安新县| 阿克陶县| 绥棱县| 西城区| 泸水县| 宣城市| 泸水县| 昌宁县| 永胜县| 陵川县| 虞城县| 莱西市| 轮台县| 德兴市| 凤城市|