iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 8
0
自我挑戰組

Framework 設計原則系列 第 8

Types 設計原則(3) - Abstract Class , Static Class

  • 分享至 

  • xImage
  •  

本文重點

  1. Abstract Class 使用注意事項
  2. Static Class 使用注意事項

Abstract Class

  1. 關於abstract class的建構子
    1.1 不要 public, internal protected

    使用者要產生一個Class物件必須要有public建構子才能new他
    但是abstract class是無法產生的(new他)
    所以在abstracl class中寫public建構子是一個錯誤的設計

    1.2 使用 protected, internal

    protected建構子是要給繼承abstract class的subtype新增時初始化用的

    好的設計 :

    public abstract class Claim{
        protected Claim(){
        ...
        }
    }
    
    public abstract class Claim{
        internal Claim(){
        ...
        }
    }
    

    不好的設計

    public abstract class Claim{
        public Claim(){
        ...
        }
    }
    
    public abstract class Claim{
        internal protected Claim(){
        ...
        }
    }
    
  2. 至少要有一個Class繼承這個abstract Class,並實作方法

不然就乾脆寫Class就好啦。。。

Static Class

static class在使用上非常簡單

是簡單開發與物件導向之間的一個折衷解決方法

裏頭只能宣告static的成員(包括變數、方法阿...)

一個static class是密封(sealed)的抽象(abstract)的

不能被複寫的

因此,請保持下列規範

  1. 請保守的使用static class
    因為只有物件導向語言支援static class

  2. 當你使用的語言不支援static class時,請參考下列方法
    2.1 宣告這個class為sealed且abstract
    2.2 加上一個private的建構子
    如下,C++就不支援,要用的話可以寫成這樣

pulbic class File abstract sealed{
    private File(){
        ...
    }
}
  1. 雖然很方便,但也不要把她當大補帖放些阿拉阿紮的

不過受限於static class的限制,想在static class包山包海也很困難吧

  1. 不要去override static class裏頭的成員

上一篇
Types 設計原則(2) - Class, Struct, Interface 之間如何選擇
下一篇
Types 設計原則(4) - Interface, Struct
系列文
Framework 設計原則30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言