软件设计原则

本文主要介绍软件设计中运用到的几个主要的设计原则,“单一职责原则” “开放-封闭原则” “最少知识原则”

单一职责原则

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中提出。它的定义如下:
软件实体(类、模块、函数)等应该是可以扩展的,但是不可修改。

开放封闭原则在设计模式中的体现是装饰着模式中,还有在 发布-订阅模式、模板方法模式、策略模式、代理模式、职责链模式中皆有体现。

你可能感兴趣的:(设计模式,设计模式)