面向对象设计原则

面向对象设计原则

总纲:低耦合(模块与模块之间,类与类之间)、高内聚(模块颞部或类内部的关系)
在大多数情况下,开闭原则,里氏替换原则和依赖倒置原则会同时出现;开闭原则是目标,里氏替换原则是基础,依赖倒置原则是手段;

1,单一职责原则S

核心:一个类,或一个模块,最好只做一件事,只有一个引起类或模块变化的外因。
此原则核心是 解耦增强内聚性
例子:将长方形类的画图与计算功能分开,这样,计算面积就是计算面积,画图就是画图。
在这里插入图片描述

2,开放闭合原则O

核心:对扩展开放,对修改关闭
例子:版本升级,不该源代码,原来的功能是可以使用的。计算器代码的实现:分别设计加减乘除,不如直接使用继承,实现虚方法。

class Calculator
{
public:
	int plus(int x,int y)
	{
	...
	}
	int minus(int x,int y)
	{
	...
	}
	int multiply(int x,int y)
	{
	...
	}
	int divide(int x, int y)
	{
	...
	}
}

在这里插入图片描述

clsaa Calclator
{
public:
	virtual int getResult(int x, int y)=0;
	virtual ~Calculator(){}
};
class plusCalculator
:public Calculator
{
public:
	virtual int getResult(int x,int y)
	{
	return x+y;
	}
	~plusCalculator()
	{
	}
};
class MinusCalculator
:public Calculator
{
public:
	virtual int getResult(int x,int y)
	{
	return x-y;
	}
	~MinusCalculator()
	{
	}
};
class MultiplyCalculator
:public Calculator
{
public:
	virtual int getResult(int x,int y)
	{
	return x*y;
	}
	~MultiplyCalculator()
	{
	}
};
class DivideCalculator
:public Calculator
{
public:
	virtual int getResult(int x,int y)
	{
		if(0!=y)
			{
				return x/y;
			}
		else
		{
			cout<<"除数不能为0"<<endl;
			return -1;
		}
	}
	~DivideCalculator()
	{
	}
};

3,里氏替换原则L

核心:派生类必须能替换基类
派生类可以扩展基类的功能,但不能改变基类原有的功能。
表现:子类可以实现父类的抽象方法,表现多态;但不能覆盖父类的非抽象方法;子类可以有自己的个性;
在这里插入图片描述

4,接口分离原则I

核心原则:使用多个小的专门的接口,而不要使用一个大的总接口。
例子:鸟与鸵鸟。
在这里插入图片描述

5,依赖倒置原则D

核心:面向接口编程,依赖于抽象(抽象是稳定的,具体的是在变化的)
在此处 面向接口编程,说的就是纯虚函数,包含纯虚函数的类,称为抽象类,抽象类是稳定不变的。
例子:银行业务类。
在这里插入图片描述

6,迪米特原则(最少知识原则)

一个软件实体应尽可能少的与其他实体发生作用

核心:尽量降低类与类之间的耦合,减少类与类之间的关联程度。
例子:楼盘买房问题

7,组合复用原则

核心:尽量采用组合,聚合的方式而不是继承的方式来达到软件复用的的目标
在这里插入图片描述

七大设计原则的总结

原则的目的只有一个:降低对象之间的耦合,增加程序的可复用性、可扩展性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值