合成复用原则
来源:互联网 发布:java 触发器 开源 编辑:程序博客网 时间:2024/05/16 09:54
#include<iostream>
using namespace std;
//合成复用原则:对于继承和组合,优先使用组合
//抽象车
class AbstractCar
{
public:
virtual void run() = 0;
};
//大众车
class DaZhong : public AbstractCar
{
public:
virtual void run()
{
cout<<"大众车启动..."<<endl;
}
};
//拖拉机
class TuoLaJi : public AbstractCar
{
public:
virtual void run()
{
cout<<"拖拉机启动..."<<endl;
}
};
//可以使用组合,将车作为人的成员变量
class Person
{
public:
void setCar(AbstractCar* car)
{
this->car=car;
}
void Doufeng()
{
this->car->run();
if(this->car!=NULL)
{
delete this->car;
this->car=NULL;
}
}
public:
AbstractCar* car;
};
void test02()
{
Person* p = new Person;
p->setCar(new DaZhong);
p->Doufeng();//空间释放在函数里面进行释放
p->setCar(new TuoLaJi);
p->Doufeng();//空间释放在函数里面进行释放
delete p;
}
int main(void)
{
test02();
system("pause");
return 0;
}
using namespace std;
//合成复用原则:对于继承和组合,优先使用组合
//抽象车
class AbstractCar
{
public:
virtual void run() = 0;
};
//大众车
class DaZhong : public AbstractCar
{
public:
virtual void run()
{
cout<<"大众车启动..."<<endl;
}
};
//拖拉机
class TuoLaJi : public AbstractCar
{
public:
virtual void run()
{
cout<<"拖拉机启动..."<<endl;
}
};
//可以使用组合,将车作为人的成员变量
class Person
{
public:
void setCar(AbstractCar* car)
{
this->car=car;
}
void Doufeng()
{
this->car->run();
if(this->car!=NULL)
{
delete this->car;
this->car=NULL;
}
}
public:
AbstractCar* car;
};
void test02()
{
Person* p = new Person;
p->setCar(new DaZhong);
p->Doufeng();//空间释放在函数里面进行释放
p->setCar(new TuoLaJi);
p->Doufeng();//空间释放在函数里面进行释放
delete p;
}
int main(void)
{
test02();
system("pause");
return 0;
}
阅读全文
0 0
- 合成复用原则
- 合成复用原则
- 合成复用原则
- 合成复用原则
- 合成/聚合复用原则
- 合成/聚合复用原则
- 合成聚合复用原则
- 合成/聚合复用原则
- 合成/聚合复用原则
- 合成、聚合复用原则
- 合成/聚合复用原则
- 合成复用原则(C++)
- 合成聚合复用原则(CARP)
- 合成/聚合复用原则(CARP)
- 合成/聚合复用原则CARP
- 合成/聚合复用原则(CARP)
- 【设计模式】合成复用原则
- 设计模式系列:合成复用原则
- MixPHP/Yii/CodeIgniter 并发压力测试
- logback配置详解
- 用RecyclerView打造轮播图控件
- Delphi10.1下FormCreate中动态创建的控件在移动端显示不对的解决办法
- [欧拉回路 最小生成树] UOJ#236 -- IOI2016. railroad
- 合成复用原则
- mysql 根据某个字段将多条记录的某个字段拼接成一个字段
- Android平台WIFI启动流程之一
- 一元多项式加减乘求导微分简单运算
- Python笔记(1)—常用内建模块—datatime
- 一个感染型木马病毒分析(二)
- 10个JavaScript难点
- Oracle SQL编写注意事项
- shell编程——if语句 if -z -n -f -eq -ne -lt