第一章.设计原则-----单一职责原则

本文深入探讨了设计原则中的单一职责原则(SRP),强调一个类或方法应仅有一个引起其变化的原因。通过代理模式、迭代器模式、单例模式和装饰者模式的例子,阐述了如何在JavaScript中应用SRP,以及何时应该分离职责。违反SRP可能导致低内聚和脆弱的设计,但在方便性和稳定性之间需要权衡。SRP的优点包括降低复杂度、提高代码复用和测试性,但也会增加代码编写复杂度。
摘要由CSDN通过智能技术生成

单一职责原则

就一个类来说,应该仅有一个引起它变化的原因。在 JavaScript 中,单一职责原则更多地是被运用在对象或者方法级别上。

如果我们有两个动机去改写一 个方法,那么这个方法就具有两个职责。每个职责都是变化,需求的变迁过程中,需要改写这个方法的可能性就越大。此时,这个方法通常是一个不稳定的方法,修改代码总是一件危险的事情,特别是当两个职责耦合在一起的时候,一个职责发生变化可能会影响到其他职责的实现,造成意想不到的破坏, 这种耦合性得到的是低内聚和脆弱的设计。

SRP 原则体现为:一个对象(方法)只做一件事情。

1. 设计模式中的SRP原则

SRP 原则在很多设计模式中都有着广泛的运用,例如代理模式、迭代器模式、单例模式和装 饰者模式。这些模式我们会在以后进行详细的讲解。

1.1. 代理模式

我们使用图片预加载的例子。通过增加虚拟代理的方式,把预加载图
片的职责放到代理对象中,而本体仅仅负责往页面中添加 img 标签,这也是它最原始的职责。

myImage 负责往页面中添加 img 标签:

var myImage = (function(){
	var imgNode = document.createElement( 'img' ); document.body.appendChild( imgNode );
	return {
		setSrc: function( src ){
					imgNode.src = src;
		 }
	} 
})();

proxyImage 负责预加载图片,并在预加载完成之后把请求交给本体 myImage:

var proxyImage = (function () {
    var img = new Image; img.onload = function () {
      myImage.setSrc(this.src);
    }
    return {
      setSrc: function (src) {
        myImage.setSrc('file:// /C:/Users/svenzeng/Desktop/loading.gif');
        img.src = src;
      }
    }
  })();
  proxyImage.setSrc('http:// imgcache.qq.com/music/photo/000GGDys0yA0Nk.jpg');
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值