针对接口编程
針對(duì)接口編程
針對(duì)接口編程:
針對(duì)接口編程,不要針對(duì)具體編程是依賴倒轉(zhuǎn)原則的另外一種表述。針對(duì)接口編程又稱為面向接口編程,針對(duì)接口編程就是要先設(shè)計(jì)一系列的接口,把設(shè)計(jì)和實(shí)現(xiàn)分離開。
其核心思想是,我們只提供你使用的接口,接口中的代碼如何實(shí)現(xiàn)的我們不管,你可以更改接口中的內(nèi)容,但接口的使用方法是永遠(yuǎn)也不會(huì)改變的。
以下用一個(gè)例子來說明,什么是針對(duì)接口編程。
加密解密是我們用的比較多的東西,有時(shí)候,公司開發(fā)的過程中用到了一種加密算法,輸入字符串后經(jīng)過加密算法處理了,然后輸出加密過的字符串。可能一開始用的是一種加密方法,到后面又換了另外一種加密方法,這個(gè)時(shí)候,如果你不是針對(duì)接口編程,你就得挨個(gè)的修改各個(gè)使用了該加密方法的接口,效率低,對(duì)吧,那就請(qǐng)看下面的例子吧:
先提供加密解密的接口:
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
因?yàn)榧用芙饷艿姆绞接泻芏喾N,但我們這里提供出一個(gè)統(tǒng)一的接口,至于這個(gè)接口里面到底是實(shí)現(xiàn)了那種加密方式,是由我們決定的。
在這里,如果我們用的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
此時(shí),可以把接口修改成這樣子:
對(duì)外接口是沒有任何變化的呢
如果,我們要切換加密方式,切換成AES加密,這個(gè)時(shí)候,只用在實(shí)現(xiàn)里面修改就行了。
其實(shí),這就是把設(shè)計(jì)和實(shí)現(xiàn)分離的一個(gè)很好的例子,設(shè)計(jì)的接口具有通用性,而實(shí)現(xiàn)是根據(jù)需求來變化的:),可以方便的改變而不影響使用。
總結(jié)
- 上一篇: [置顶]WebService学习总结(4
- 下一篇: [翻译] NSRegexTester