【设计模式】类关系

引言

耦合性:参考文章

下面就通过耦合性的由弱到强,依赖、关联、聚合、组合、继承(泛化)、实现。(总结:衣冠剧组呈现)

一、依赖Dependency

例:A类是B类的成员函数的参数、返回值(局部变量)
在这里插入图片描述

class A{};
class B{
public:
	void FunB(A& a){}
	A GetA()
	{
		return A();
	}
};

二、关联Association

例:A类是B类的一个成员属性

(1)弱关联
在这里插入图片描述

class A{};
class B{
private:
	A* pa;
public:
	B(A* ptr):pa(ptr)
	{}
	//B析构函数不能delete pa,弱关联关系
	~B(){}
};
int main()
{
	A a;
	B b(&a);
	return 0;
}

(2)强关联
在这里插入图片描述

class A{};
class B{
private:
	A& aref;
public:
	//强关联,引用必须初始化
	//注意:参数不能使用A a 来构造aref
	//(当a的声明周期结束后(只有该函数内),函数结束aref就会失效)
	B(A& a):aref(a)
	{}

	~B(){}
};
int main()
{
	A a;
	B b(a);
	return 0;
}

三、聚合Aggregation

在这里插入图片描述

class point{
private:
	int _x;
	int _y;
public:
	point(int x, int y): _x(x), _y(y){}
	~point(){}
};
class Circle{
private:
	point center;	//圆心
	int radius;		//半径
public:
	Circle():center(pointer(0, 0)), radius(0)
	{}
};

四、组合Composition

在这里插入图片描述

class body{};
class soul{};
class human{
private:
	body _bd;
	soul _sl;
public:
	human(const body& bd, const soul& sl):_bd(bd), _sl(sl)
	{}
};

五、继承Generalization

在这里插入图片描述

class Animal{};
class Bird : public Animal{};

六、实现Realization

实现对应的是面向对象中的"接口",即动物都要移动,但是每种移动的方式不一样,鸟要实现自己独有的移动的方法。
在C++中,接口通过的纯虚函数来实现,C++的多态就是通过虚函数来实现的。

class Animal{
    public:
        vitual void move();
};
class Bird: public Animal{
    void move(){
        //鸟的移动方式,飞
    }
};

参考文章:
面向对象的类关系及其C++实现
设计模式中类的关系:依赖、关联、聚合、组合、继承、实现。耦合度依次递增

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值