學會 【轉】讓女人感動的一句粗話
Jun 02

Hiding the Implementation

讓變動的事物與不變的事物彼此隔離,是 OOD 的首要考慮因素。

一、package:library unit
(1)package name 採用反相 internet 域名,以確保其唯一性,並且規定皆爲小寫(Java2 開始規定);

(2)import 的兩個 library 如含有同名的 class 則仍會發生衝突,可通過在使用時通過指定具體的 package.class 名來解決,如:

java.util.Random random = new Random();

二、Access Specifiers
(1)public:所定義的成員可爲所有人使用;

(2)private:除其所在的 class,沒有任何人(包括 package 成員)可以訪問;

(3)protected:允許 class 自身、subclasses 以及 package 成員訪問;

(4)friendly(默認、隱式):不加任何 Access Specifiers 的默認權限,類似於 protected,唯一的區別是 friendly 不能被繼承使用;

(5)default package:假設成員皆爲 friendly(或是更高級別的權限),那麽同一目錄下的所有 class 即使不加任何 package、import 聲明也可以相互調用;這是因爲 Java 會將這些 class 視爲隸屬於該目錄的 default package,也就是說,會爲它們加上當前的目錄做爲 default package。

三、Interface 與 Implementation
(1)訪問權限

  • 建立界限,保護(密)代碼;
  • 使得接口和實現分離、獨立。

(2)class 的訪問權限

  • 每個編譯單元(即文件)都僅能有一個 public class;
  • public class 的名稱(包括大小寫)必須與其編譯單元名稱完全相同;
  • 編譯單元內可不含任何的 public class;
  • 除 inner class,class 不能聲明爲 private 或 protected;
  • 使用 private class:

A. 可在 private class 內增加起接口作用的 static 成員,通過 static 成員來使用 private 成員;
B. 使用 Singleton。

Leave a Reply