程式設計在某種程度上都是在消弭重複性,以提高程式可維護性來控制軟體複雜度。若從消弭重複性來瞭解物件導向中封裝、繼承、多型,就可具體瞭解這些基本原則的作用。
封裝消弭了物件的重複行為
假設你用類別基礎的Java設計僅具有name與balance的Account類別,而同事拿來建立多個物件,像是建立acct1、並為acct1.name與acct1.balance指定值,建立acct2並為acct2.name與acct2.balance指定值……
Account acct1 = new Account();
acct1.name = "Justin";
acct1.balance = 200; // 請自行想像以上流程重複多次
你立刻發現,同事建立物件後,都作了重複初始流程。對程式設計者而言,「重複」並不是美德。例如同事若初始10個物件,假以時日,若初始流程更改了,他就必須修改10個地方,毫無可維護性可言。你觀察同事初始物件的流程,在Account類別定義建構式,將初始流程予以「封裝」:
Account(String name, double balance) {
this.name = name;
this.balance = balance;
}