针对接口编程

简介:

针对接口编程

针对接口编程:

针对接口编程,不要针对具体编程是依赖倒转原则的另外一种表述。针对接口编程又称为面向接口编程,针对接口编程就是要先设计一系列的接口,把设计和实现分离开。

其核心思想是,我们只提供你使用的接口,接口中的代码如何实现的我们不管,你可以更改接口中的内容,但接口的使用方法是永远也不会改变的。

以下用一个例子来说明,什么是针对接口编程。

加密解密是我们用的比较多的东西,有时候,公司开发的过程中用到了一种加密算法,输入字符串后经过加密算法处理了,然后输出加密过的字符串。可能一开始用的是一种加密方法,到后面又换了另外一种加密方法,这个时候,如果你不是针对接口编程,你就得挨个的修改各个使用了该加密方法的接口,效率低,对吧,那就请看下面的例子吧:

先提供加密解密的接口:

CipherInterface.h 与 CipherInterface.m

//
//  CipherInterface.h
//  MD5
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface CipherInterface : NSObject

// 加密接口
- (NSString *)enCryptKey:(NSString *)key string:(NSString *)string;

// 解密接口
- (NSString *)deCryptKey:(NSString *)key string:(NSString *)string;

@end


//
//  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.h
//  MD5
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface DesCrypt : NSObject

// 加密接口
- (NSString *)enDesKey:(NSString *)key string:(NSString *)string;

// 解密接口
- (NSString *)deDesKey:(NSString *)key string:(NSString *)string;

@end


//
//  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加密,这个时候,只用在实现里面修改就行了。

其实,这就是把设计和实现分离的一个很好的例子,设计的接口具有通用性,而实现是根据需求来变化的:),可以方便的改变而不影响使用。

目录
相关文章
|
18天前
|
安全 Java 数据安全/隐私保护
|
4月前
|
Java
Java面向对象编程,如何定义一个接口并在类中实现它?
Java面向对象编程,如何定义一个接口并在类中实现它?
41 1
|
6月前
|
算法 网络协议 开发者
|
9月前
|
Java 编译器
接口的学习与总结
接口的学习与总结
|
9月前
|
前端开发 微服务
|
Java
Java面向对象基础2——封装
简单来说,封装就是正确地设计对象的属性。要注意的是,对象代表什么,就封装对应的数据,并提供数据的对应行为
84 0
Java面向对象基础2——封装
|
开发者 Python
面向对象的服务器封装 | 学习笔记
快速学习 面向对象的服务器封装
86 0
|
Java 容器
Java面向对象接口
Java面向对象接口
100 0