• 设计模式适配器模式


    适配器模式Adapter):

        将一个类的接口转换成客户希望的;另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。



        也就是系统的数据和行为都正确,但接口不符合时,我们应该考虑用适配器,目的是使控制范围以外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况,比如在需要对早期代码复用一些功能等应用上很有实际价值。
    何时使用适配器模式?
    1.使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑使用适配器模式。
    2.客户代码可以统一调用同一接口就行了,这样应该可以更简单、更直接。更紧凑。
    3.我们通常是在软件开发后期或者是开发过程中使用别人的模块才使用这个模式。
    4.在双方都不太容易修改的时候再使用适配器模式适配,而不是一有不同时就使用它。
    下面是实现代码,很简单。
    #pragma once
    
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    //Target 这是客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口
    class CTarget
    {
    public:
    	virtual void Request() = 0;
    };
    
    //Adaptee 需要适配的类
    class CAdaptee
    {
    public:
    	void SpecificRequest()
    	{
    		cout<<"特殊请求"<<endl;
    	}
    };
    
    //Adapter 通过在内部包装一个Adaptee对象,把源接口转换成目标接口
    class CAdapter : public CTarget
    {
    private:
    	CAdaptee * m_pAdaptee;
    public:
    	CAdapter(){m_pAdaptee = new CAdaptee();}
    	~CAdapter(){delete m_pAdaptee;}
    	void Request()
    	{
    		m_pAdaptee->SpecificRequest();
    	}
    };
    
    
    
    客户端调用代码:
    #include "stdafx.h"
    #include "AdapterMode.h"
    #include <windows.h>
    using namespace std;
    
    int main()
    {
    	CTarget *pTarget = new CAdapter();
    	pTarget->Request();
    	delete pTarget;
    	return 0;
    }
    运行结果:

    比较简单就不多说了。
  • 相关阅读:
    Django rest framework集成微博第三方登录
    Python web项目Django部署在Ubuntu18.04腾讯云主机上
    Mac中安装JDK1.8和JDK11双版本并任意切换
    Nginx完美解决前后端分离端口号不同导致的跨域问题
    Mac系统安装Tomcat服务器
    Python将数据渲染到docx文档指定位置
    IO多路复用select/poll/epoll详解以及在Python中的应用
    Tornado框架实现异步爬虫
    广州商学院Python正方教务系统爬虫(获取个人信息成绩课表修改密码)
    Python3使用tkinter编写GUI程序
  • 原文地址:https://www.cnblogs.com/csnd/p/12062339.html
Copyright © 2020-2023  润新知