面向对象设计原则之单一职责原则——single responsibility principle-ag捕鱼王app官网

面向对象设计原则之单一职责原则——single responsibility principle

作者:迹忆 最近更新:2022/12/12 浏览次数:

单一职责原则是面向对象设计中最简单的原则。所谓单一职责,说白了就是一个类只负责一个职能。单一职责原则是这样定义的:

单一职责原则(single responsibility principle):一个类只负责一个功能领域中的相应职责,并且该功能职责应该完全由这个类封装起来。

在我们的程序设计过程中,一个类的方法不易太多,能完成自己对应的功能即可。如果说,一个类包含了两个功能,那就有可能在我们修改其中一个功能的时候从而影响到另一个功能。

假设我们有一个购物车的实例

//购物车
class cart
{
	// 添加商品
	public function additem(){ /* ... */}
	// 移除商品
	public function deleteitem(){/* ... */}
	// 获取商品
	public function getitem(){/* ... */}
	// 设定订单信息
	public function setorderinfo($info){/* ... */}
	// 取得付款信息
	public function getpaymentinfo(){/* ... */}
	// 保存订单
	public function saveorder(){/* ... */}
	// 发送订单确认邮件
	public function sendmail(){/* ... */}
}
$cart = new cart();
$cart->additem(); // 添加商品
$cart->getpaymentinfo(); //获取付款信息

我们可以看到,在一个购物车的类中,除了应该有的添加商品、删除商品和获取商品方法之外。还包含了设定订单信息、取得付款信息、保存订单以及发送确认订单邮件这些方法。很明显,这个类显然做了一些不应该它负责的事情。如果我们在其他的地方使用订单的话,我们还得去实例化一个购物车的实例,非常奇怪。所以说,根据单一职责原则,我们需要拆分这个类。把订单的方法拿出去,单独定义一个order类。

// 订单
class order
{
	// 设定订单信息
	public function setorderinfo($info){/* ... */}
	
	// 取得付款信息
	public function getpaymentinfo(){/* ... */}
	
	// 保存订单
	public function saveorder(){/* ... */}
	// 发送订单确认邮件
	public function sendmail(){/* ... */}
}
// 重构后的购物车
class cart
{
	// 添加商品
	public function additem(){ /* ... */}	
	// 移除商品
	public function deleteitem(){/* ... */}	
	// 获取商品
	public function getitem(){/* ... */}
}
$cart = new cart();
$order = new order();
$cart->additem(); // 添加商品
$order->getpaymentinfo(); //获取付款信息

这样一拆分,当我们需要在其他的地方使用订单的时候,只需要实例化一个order对象,而不是cart对象。即使我们的购物车中也需要订单,那就直接实例化一个order对象,用其里面的方法即可。

这样,即使以后需要修改订单的功能,也不会影响到购物车的基本功能的使用。这样的代码以后维护起来也是非常方便的。而且可读性也是非常高的。

总的一句话,单一职责原则其实说白了就是不要越俎代庖,做好自己应该做的事情就好。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图