设计模式|软件设计原则

本文主要介绍软件设计中运用到的几个主要的设计原则,“单一职责原则” “开放-封闭原则” “最少知识原则”
单一职责原则 SRP:Single responsibility principle 原则体现为:一个对象(方法或者类)只做一件事情
eg: 使用单例模式创建一个登陆浮窗, 最开始代码如下:

var createLoginLayer = (function () { var div; return function () { if(!div) { div = document.createElement('div') div.innerHTML = "登陆浮窗" div.style.display = 'none' document.body.appendChild(div) } return div } })

使用单一原则改动,把单例的职责和创建登陆浮窗的职责分别封装在两个方法中,这两个方法可以独立变化而互不影响,当它们连接在一起的时候,就完成了创建唯一浮窗的功能,代码如下:
var createLoginLayer = function () { var div = document.createElement('div') div.innerHTML = "登陆浮窗" div.style.display = 'none' document.body.appendChild(div) return div }var getSingle = function (fn) { var result return function () { return result || (result = fn.apply(this, arguments)) } }var createSingleLoginLayer = getSingle(createLoginLayer) createSingleLoginLayer()

最少知识原则 迪米特法则(Law of Demeter)又叫作最少知道原则(Least Knowledge Principle 简写LKP)软件实体应该与其他实体尽可能少的发生作用和联系,这里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。
开放-封闭原则 开放-封闭原则最早由Eiffel 语言的设计者Bertrand Meyer 在其著作 Object-Oriented Software Construction中提出。它的定义如下:
软件实体(类、模块、函数)等应该是可以扩展的,但是不可修改。
【设计模式|软件设计原则】开放封闭原则在设计模式中的体现是装饰着模式中,还有在 发布-订阅模式、模板方法模式、策略模式、代理模式、职责链模式中皆有体现。

    推荐阅读