一个对象/方法只做一件事情。就一个类而言,应该仅有一个引起它变化的原因
一个对象(方法)只做一件事情。
SRP 原则在很多设计模式中都有广泛的运用,例如代理模式,迭代器模式、单例模式和装饰者模式。
代理模式
把添加 img 标签和预加载图片的职责分开放到两个对象中,这两个对象都只有一个被修改的动机。他们各自发生变化的时候,也不会影响到另外一个对象
const myImage = (function () {
const Image = document.createElement("img");
document.body.appendChild(Image);
return {
setSrc: function (src) {
Image.src = src;
},
};
})();
// 加一层代理,在图片加载前先展示 x.jpg
const proxyImage = (function () {
const img = new Image();
img.onload = function (src) {
myImage(this.src);
};
return function () {
myImage("./logo192.png");
img.src = src;
};
})();
proxyImage(
"http://a1.qpic.cn/psc?/V136LlQn4Btod3/ruAMsa53pVQWN7FLK88i5iAcMicwMv1z7. 3IKQFRFzr50QXCJ3qDREMjNkw3TsqT9lwVUntnOV*0H27hHUEP8nH1fGWVMHu4.OQLi1dRSE4!/c&ek=1&kp=1&pt=0&bo=VQhABlUIQAYWECA!& tl=3& vuin=1411818691&tm=1666198800&dis_t=1666199020&dis_k=424467f433b9c9b64c82c0846a57d281&sce=60-2-2&rf=0-0"
);