ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

软件设计⑧|适配器模式

2021-10-31 19:36:20  阅读:210  来源: 互联网

标签:virtual 软件设计 适配器 dog 模式 public client looks void


效果:

类图:

 代码:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //抽象类AbstractDog
 5 class AbstractDog {
 6 public:
 7     virtual void dog_looks() = 0;
 8     virtual void bark() = 0;
 9 };
10 
11 //抽象类AbstractCat
12 class AbstractCat {
13 public:
14     virtual void cat_looks() = 0;
15     virtual void grab() = 0;
16 };
17 
18 //Adapter类Dog
19 class Dog {
20 public:
21     void dog_looks() {
22         std::cout << "我是一只狗!" << std::endl;
23     }
24     void bark() {
25         std::cout << "我是狗,我会狗吠哦!" << std::endl;
26     }
27 };
28 
29 //Adapter类Cat
30 class Cat {
31 public:
32     void cat_looks() {
33         std::cout << "我是一只猫!" << std::endl;
34     }
35     void grab() {
36         std::cout << "我是猫,我会抓老鼠哦!" << std::endl;
37     }
38 };
39 
40 //Adapter类DogAdapter
41 class DogAdapter :public AbstractCat, private Dog {
42 public:
43     void cat_looks() {
44         std::cout << "猫模仿狗:" << std::endl;
45         Dog::dog_looks();
46     }
47     void grab() {
48         std::cout << "猫模仿狗:" << std::endl;
49         Dog::bark();
50     }
51 };
52 
53 //Adapter类CatAdapter
54 class CatAdapter :public AbstractDog, private Cat {
55 public:
56     void dog_looks() {
57         std::cout << "狗模仿猫:" << std::endl;
58         Cat::cat_looks();
59     }
60     void bark() {
61         std::cout << "狗模仿猫:" << std::endl;
62         Cat::grab();
63     }
64 };
65 
66 class Client {
67 public:
68     void client() {
69         DogAdapter* cat = new DogAdapter();
70         cat->cat_looks();
71         cat->grab();
72 
73         CatAdapter* dog = new CatAdapter();
74         dog->dog_looks();
75         dog->bark();
76     }
77 };
78 
79 //Client
80 int main() {
81     Client client;
82     client.client();
83     return 0;
84 
85 }

参考链接:https://blog.csdn.net/janeqi1987/article/details/103945540

标签:virtual,软件设计,适配器,dog,模式,public,client,looks,void
来源: https://www.cnblogs.com/miao-com/p/15379534.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有