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

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

學習Java基礎知識: 需求

2019-11-18 11:48:28
字體:
來源:轉載
供稿:網友

  我就不明白, 一個簡簡單單的需求分析, 在經過了這么多專家的仔細闡述分析之后,怎么讓大家搞得越來越復雜了?
  
  什么是面向接口? 就是你分析了需求, 根據需求定義了接口, 然后所有東西都圍著這個接口轉.
  
  有人可能覺得一個類通過重構變得那樣太不可接受了. 那么我請問, 你的重構的底線是什么? 類變成什么樣你可以接受? 你那么關心類的實現方法干什么? 你到底是面向接口編程還是面向類編程?
  
  一個模塊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啦, 都是你自己的一廂情愿的假設.
  
  假如分析出了這個需求, 誰是最能夠忠實反映這個需求而添加的額外約束最小的? 構造函數還是靜態工廠?
  
  一個假設最小的接口就是最靈活的接口. 什么外部創建邏輯, 什么容器, 這些外部的邏輯沒有理由在一個不靈活的接口上可以做到而在一個更靈活的接口上反而做不到.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷波县| 梅河口市| 东安县| 会宁县| 峨山| 武川县| 游戏| 南靖县| 陆川县| 南投市| 大名县| 土默特左旗| 柘城县| 连州市| 泗水县| 唐河县| 赞皇县| 大英县| 新化县| 文安县| 义马市| 九龙县| 黄骅市| 友谊县| 靖远县| 曲麻莱县| 龙山县| 石屏县| 城市| 营山县| 衡东县| 十堰市| 南溪县| 海门市| 馆陶县| 龙井市| 榆中县| 林西县| 汉中市| 桃园市| 铜川市|