针对接口编程
針對接口編程
針對接口編程:
針對接口編程,不要針對具體編程是依賴倒轉原則的另外一種表述。針對接口編程又稱為面向接口編程,針對接口編程就是要先設計一系列的接口,把設計和實現分離開。
其核心思想是,我們只提供你使用的接口,接口中的代碼如何實現的我們不管,你可以更改接口中的內容,但接口的使用方法是永遠也不會改變的。
以下用一個例子來說明,什么是針對接口編程。
加密解密是我們用的比較多的東西,有時候,公司開發的過程中用到了一種加密算法,輸入字符串后經過加密算法處理了,然后輸出加密過的字符串。可能一開始用的是一種加密方法,到后面又換了另外一種加密方法,這個時候,如果你不是針對接口編程,你就得挨個的修改各個使用了該加密方法的接口,效率低,對吧,那就請看下面的例子吧:
先提供加密解密的接口:
CipherInterface.h 與 CipherInterface.m
// // CipherInterface.m // MD5 // // Copyright (c) 2014年 Y.X. All rights reserved. //#import "CipherInterface.h"@implementation CipherInterface// 加密接口 - (NSString *)enCryptKey:(NSString *)key string:(NSString *)string {return nil; }// 解密接口 - (NSString *)deCryptKey:(NSString *)key string:(NSString *)string {return nil; }@end
因為加密解密的方式有很多種,但我們這里提供出一個統一的接口,至于這個接口里面到底是實現了那種加密方式,是由我們決定的。
在這里,如果我們用的des加密,我們可以這么寫(以下都是空代碼):
// // DesCrypt.m // MD5 // // Copyright (c) 2014年 Y.X. All rights reserved. //#import "DesCrypt.h"@implementation DesCrypt// 加密接口 - (NSString *)enDesKey:(NSString *)key string:(NSString *)string {return @"Des"; }// 解密接口 - (NSString *)deDesKey:(NSString *)key string:(NSString *)string {return @"Des"; }@end
此時,可以把接口修改成這樣子:
對外接口是沒有任何變化的呢
如果,我們要切換加密方式,切換成AES加密,這個時候,只用在實現里面修改就行了。
其實,這就是把設計和實現分離的一個很好的例子,設計的接口具有通用性,而實現是根據需求來變化的:),可以方便的改變而不影響使用。
總結
- 上一篇: [置顶]WebService学习总结(4
- 下一篇: [翻译] NSRegexTester