zoukankan      html  css  js  c++  java
  • 第17章适配器模式

    一 概念

    • 适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。
    • 系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境不一致的情况。

    二 UML图

    三 C++实现代码

    #include "pch.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    //球员的抽象类
    class Player
    {
    public:
    	virtual void Attack() = 0;
    	virtual void Defense() = 0;
    protected:
    	string name;
    };
    //前锋
    class Forwards : public Player
    {
    public:
    	void Attack() override
    	{
    		cout << "前锋" << this->name << " 进攻" << endl;
    	}
    	void Defense() override
    	{
    		cout << "前锋" << this->name << " 防守" << endl;
    	}
    };
    //中锋
    class ForeignCenter
    {
    public:
    	void SetName(string str)
    	{
    		this->name = str;
    	}
    	string GetName() const
    	{
    		return this->name;
    	}
    	void Attack() 
    	{
    		cout << "外籍中锋" << this->name << " 进攻" << endl;
    	}
    	void Defense() 
    	{
    		cout << "外籍中锋" << this->name << " 防守" << endl;
    	}
    private:
    	string name;
    };
    //后卫
    class Guards : public Player
    {
    public:
    	void Attack() override
    	{
    		cout << "后卫" << this->name << " 进攻" << endl;
    	}
    	void Defense() override
    	{
    		cout << "后卫" << this->name << " 防守" << endl;
    	}
    };
    
    //翻译者类
    class Translator : public Player
    {
    public:
    	Translator(string name)
    	{
    		wjzf = new ForeignCenter;
    		wjzf->SetName(name);
    	}
    	~Translator()
    	{
    		delete wjzf;
    	}
    	void Attack() override
    	{
    		wjzf->Attack();
    	}
    	void Defense() override
    	{
    		wjzf->Defense();
    	}
    private:
    	ForeignCenter* wjzf;
    };
    
    int main()
    {
    	Player* ym = new Translator("姚明");
    	ym->Attack();
    	ym->Defense();
    
    	return 0;
    }
    
    
  • 相关阅读:
    VS2012 for SharePoint2013 Tool安装
    SharePoint 2013网站管理网站策略(关闭和删除策略)
    呼风唤雨的公交
    ASP、Access、80040e14、保留关键字、INSERT INTO 语句的语法错误
    表格边框设置
    DotNet开发中关于SQLServer连接的两种方法之比较
    SQL语句集锦
    动态网页设计笔记
    SQL SERVER中日期 where 问题的解决
    配置你的ASP.NET运行环境
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/11126867.html
Copyright © 2011-2022 走看看