bic*_*bic 7 oop design-patterns single-responsibility-principle solid-principles
我正在努力理解单一责任原则如何与OOP合作.
如果我们要遵循这个原则来开球,那么我们是不是留下了许多课程,其中许多课程可能只有一个方法?
如果我们不完全遵循这个原则,那么这个原则的重点是什么?
我喜欢用这种方式陈述单一责任原则:"你写的每件事 - 每个模块,类,接口或方法,都应该有一份工作.它应该完成整个工作,只做那份工作.
请注意,您编写的这些内容中的一些是大(模块),一些是小(方法),一些是在(类)之间,而一些大事由较小的东西组成.
这不是问题,因为工作或职责也有各种规模,可以分层次地分解.警察的工作,例如,是为了"保护和服务" - 一个任务,即分解成"上街巡逻","破案"等,它们可以分别由不同的单位进行处理.这就产生了协调的需要(一项不同的工作),每个单位的工作分解为个别官员的工作等.
对于每一个重要的工作,有很多方法可以将其分解为较小的工作,并且每个工作都可以通过遵循SRP和其他SOLID原则的软件设计来建模.决定如何解决问题是软件设计艺术的重要组成部分.
一个类应该处理一个主题,这是它的单一职责。一个类Car
可以包含如下方法startEngine()
或属性weight
:
class Car
{
int weight;
void startEngine();
void stopEngine();
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以将这个类更多地拆分。例如通过为引擎定义一个类:
class Engine
{
start();
stop();
}
class Car
{
Engine engine;
int weight;
}
Run Code Online (Sandbox Code Playgroud)
但是您不应为启动和停止引擎定义单独的类,例如:
class EngineStop
{
stop();
}
class EngineStart
{
start();
}
class Car
{
EngineStart engineStart;
EngineStop engineStop;
int weight;
}
Run Code Online (Sandbox Code Playgroud)
原则是尽可能合理地分解类以实现抽象。抽象得太深违反了这个原则。
归档时间: |
|
查看次数: |
837 次 |
最近记录: |