1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)

设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)

时间:2019-05-16 02:50:24

相关推荐

设计模式工作笔记-简单工厂场景与实现(针对接口编程的设计思想)

简单工厂:通过接口的方式,把实现和变化隔离

接口编程:是一种特殊的抽象类,是一个纯虚类。通常接口来定义类的外部,就相当于一份契约,其实就是根据外部应用

需要的功能,约定了实现类应该要实现的功能。

软件开发中永恒的主题是“变化”,接口的最重要的一个设计语义就是封装变化,也就是隔离变化(内部实现对外部是透

明的)。

从软件的整体结构上来看,只要接口不变,内部实现的变化就不会影响到外部应用,从而使得系统更加灵活,具有更好的

扩展性和可维护性。

设计模式的重点是对象间的结构!!!

如下面的这一套代码:

#include <iostream>#include <string>using namespace std;class Api{public:virtual void print(string data) = 0;protected:Api(){}//屏蔽构造函数,体现接口};class Imple :public Api{public:void print(string data){cout << "print in Imple: " << data << endl;}};//测试用的客户端int main(){Api *pApi = new Imple();pApi->print("运行");system("pause");return 0;}

此程序的封装性;

因为简单工厂要求实现与变化分离;

而Api *pApi = new Imple();中客户已经知道你这里面有一个Imple了;

所以这不是简单工厂所要提现的

下面这个是简单工厂的思想:

#include <iostream>#include <string>using namespace std;class Api{public:virtual void print(string data) = 0;protected:Api(){}}; class ImpleOne :public Api{public:void print(string data){cout << "print in ImpleOne: " << data << endl;}};class ImpleTwo :public Api{public:void print(string data){cout << "print in ImpleTwo: " << data << endl;}};//下面的这个是关键了啊,这个Factory具有承上启下的作用class Factory{public:static Api* createApi(int type){Api *pApi = nullptr;if (type == 1){pApi = new ImpleOne;}else if (type == 2){pApi = new ImpleTwo;}return pApi;}};/*使用传入参数1,可以实现从数据库读入的功能,传入参数2,可以实现从文本读入的功能这就是更具接口的公约,实现做什么样的事情实现和变化隔离,但觉得参数2效率不行时,执行修改2里面的东西,这样就实现了分离简单工厂:通过接口的方式,把实现和变化隔离*/int main(){Api *pApi = Factory::createApi(1);//感觉就是把2个new的工作放到了Factory里面pApi->print("简单工厂!");//如何理解是不是把new放进去就是简单工厂system("pause");return 0;}//实现了客户调用和implOne,implTwo的解耦合//factory类实现了变化隔离

简单工厂的定义:

提供一个创建对象实例的功能,而无需关心其具体实现。被创建的类型可以是接口、抽象类,也可以是具体的类。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。