1. 概念
GOF书中提到,面向对象编程第一原则: "Program to an interface, not an implementation" ,这是接口实现分离的基本思想。
我的理解: “在开发过程中,在外部用户和实现者之间加入一层接口,外部用户调用接口为其服务,实现者针对接口进行实现。“
外部用户和实现者的概念我们可以大到系统 ,也可以小到函数。本质上是分层的设计理念
通过在不同的层次之间,加入接口,至少可以带来以下二个好处:
1). 内部实现对外部用户透明,内部实现的修改,不影响外部用户的使用,当然,前提是友好的对外接口。
2). 利于开发者之间的并行,在定义好接口之后,各层可以在不互相影响的前提下,并行开发。
2.例子
餐馆的厨师老王是个高级厨师,他有一门独门秘技”红烧鱼“,既然是独门秘技,那么他当然不想告诉别人是怎么做的咯。
我们看下怎么实现:
对外接口类:fish
实现类:fish_wang
code:
fish.h
fish.cpp:
#include "fish.h" using namespace std; fish::fish() { _fish_wang = new fish_wang; } fish::~fish(void) { if(!_fish_wang) { delete _fish_wang; } } void fish::cook(void) { _fish_wang->cook(); }
fish_wang.h
fish_wang.cpp
#include "StdAfx.h" #include "fish_wang.h" fish_wang::fish_wang(void) { } fish_wang::~fish_wang(void) { } void fish_wang::cook() { wang_cook(); std::cout << "老王做鱼" << std::endl; } void fish_wang::wang_cook() { //独门秘技,怎么做我不告诉你 }测试:
#include "fish.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //外部用户,使用接口实现 fish myfish; myfish.cook(); system("pause"); return 0; }
3. 总结
上面是一个简单的接口实现分离的例子,在实际项目中,特别是在并行开发的时候,这种设计方法大量使用。
本文介绍了面向对象编程的第一原则——接口实现分离,通过一个餐馆厨师的例子详细阐述了这一原则的应用及其实现方式。接口实现分离有助于提高系统的灵活性和可维护性。

485

被折叠的 条评论
为什么被折叠?



