今天和大家分享的是模板方法模式。這個模式的核心思想就是通過把不變的行為搬移到超類,去除子類中的重複**來體現它的優勢。其實,模板方法模式就是提供了乙個很好的**復用平台。
首先,還是先簡單看一下定義:
模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。下面和給大家展示一下類的結構圖:
其實,結構很簡單,只有兩層關係,核心思想就是把公共方法向上提到父類中。**實現起來也不複雜。下面還是老樣子,向大家簡單展示一下**如何實現。
****************************************====
1
2
3
4
5
6
7
#import
@inte***ce
abstractclass :
nsobject
-(
void
)primitiveoperation1;
-(
void
)primitiveoperation2;
-(
void
)templatemethod;
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#import "abstractclass.h"
@implementation
abstractclass
-(
void
)primitiveoperation1
-(
void
)primitiveoperation2
-(
void
)templatemethod
@end
1
2
3
4
#import "abstractclass.h"
@inte***ce
concreteclassa:abstractclass
@end
1
2
3
4
5
6
7
8
9
10
#import "concreteclassa.h"
@implementation
concreteclassa
-(
void
)primitiveoperation1
-(
void
)primitiveoperation2
@end
1
2
3
4
#import "abstractclass.h"
@inte***ce
concreteclassb:abstractclass
@end
1
2
3
4
5
6
7
8
9
10
#import "concreteclassb.h"
@implementation
concreteclassb
-(
void
)primitiveoperation1
-(
void
)primitiveoperation2
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import
#import "concreteclassa.h"
#import "concreteclassb.h"
int
main (
int
argc,
const
char
* argv)
return
0;
}
**展示完畢!其實,模板方法模式就是提供了乙個很好的**復用平台,當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重複出現。我們通過模板方法模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重複的不變行為的糾纏。
看起來不難,不過關鍵還是活學活用啊,呵呵!
JavaScript設計模式九(模板方法模式)
定義 模板方法模式是一種只需要使用繼承就可以實現的非常簡單的模式 模板方法模式由兩部分組成,第一部分是抽象父類,另一部分是具體的實現子類。通常抽象父類中封裝了子類的演算法框架,包括實現一些公共的方法以及封裝子類中所有方法的執行順序。子類通過繼承這個類,然後繼承了這個演算法,然後重寫父類的方法 例子是...
Objective C構造方法
構造方法 用來初始化的方法 之前我們建立物件的方式一直是使用 new 但是使用new建立的物件,都是給我們預設做了初始化的。有的時候,我們需要按照我們自己的需求進行初始化,那麼怎麼做呢 首先了解一下,我們使用new建立物件的時候,都做了什麼事情。分配儲存空間 alloc 呼叫類方法alloc來給物件...
ICPC模板 取模逆元(模反元素)
目錄 取模逆元 模反元素 互素情形 非互素情形 抽象代數中的逆元指的是,對於現有的乙個集合s以及定義在其上的二元運算r,任意元素與其逆元進行這個運算後可以得到單位元。取模逆元的條件定義在同余式的乘法下,即對於兩個整數a和b,如果有 則將b稱作a的逆元,同時a也是b的逆元。取模逆元常常用在計算取模表示...