设计模式的从许多优秀的软件中总结出来的 , 使用设计模式能够实现可复用、可维护、开发人员之间方便沟通设计和理解代码。

Tips

  • 对于模式的使用 , 不能拘泥于格式 , 事实上根据需要模式是可以演化的
  • 另外要适可而止 , 比如一个简单的方法就能搞定的事情 , 就没有必要滥用设计模式了

设计原则


面向对象设计原则 (SOLID)

  • 单一职责原则 (Single Responsibility Principle SRP):一个对象应该只包含单一的职责 ,并且该职责被完整的包括在一个类中;或者这样描述:一个类应该有且仅有一个引起变化的因素
  • 开闭原则 (Open Closed Principle ,OCP):它指出软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着您可以在不更改其现有代码的情况下向软件实体添加新功能或行为
  • 里氏替换原则 (Liskov Substitution Principle ,LSP):它指出子类应该能够在不影响程序功能的情况下替换其超类, 这意味着子类不应违反其超类的任何约定或期望
  • 接口隔离原则 (Interface Segregation Principle ,ISP):不应强制任何代码依赖于它不使用的方法, 这可以通过使软件更加模块化和独立来减少副作用和所需更改的频率。
  • 依赖倒置原则 (Dependence Inversion Principle ,DIP):它指出高级模块应该依赖于抽象而不是具体的实现 , 这有助于解耦高层和低层模块,更容易更改低层模块而不影响高层模块

另外两个面向对象设计原则

  • 合成复用原则(Composite Reuse Principle ,ISP ): 优先使用对象组合 , 而不是继承来到达复用目的
  • 迪米特法则 (Law of Demeter ,LoD):旨在减少对象之间的耦合。它指出一个对象应该只与靠近它的对象交互,例如它自己、它的参数、它的局部变量等,它还指出一个对象不应该知道其他对象的内部细节

其他设计原则

  • 不要重复原则 (DRY:Don't Repeat Yourself):是指编程过程中不写重复代码,将能够公共的部分抽象出来
  • 保持简单原则 (KISS:keep it simple):简单应该是设计的目标之一,应该避免不必要的复杂性 。KISS 原则这个术语是美国海军于 1960 年创造的,它可以应用于界面设计、产品设计、软件开发等各个学科
  • 用不上原则? (YAGNI:You Ain’t Gonna Need It):它指出程序员在认为必要之前不应添加功能, 这个想法是为了避免在将来可能不会使用或不需要的功能上浪费时间和资源。

软件设计原则(Principles)的更多相关文章

  1. 一篇文章带你了解设计模式原理——UML图和软件设计原则

    一篇文章带你了解设计模式原理--UML图和软件设计原则 我们在学习过程中可能并不会关心设计模式,但一旦牵扯到项目和面试,设计模式就成了我们的短板 这篇文章并不会讲到二十三种设计模式,但是会讲解设计模式 ...

  2. 最简单直接地理解Java软件设计原则之开闭原则

    写在前面 本文属于Java软件设计原则系列文章的其中一篇,后续会继续分享其他的原则.想以最简单的方式,最直观的demo去彻底理解设计原则.文章属于个人整理.也欢迎大家提出不同的想法. 首先是一些理论性 ...

  3. 这样学BAT必面之软件设计原则,还不会就是我的问题

    学习设计原则是学习设计模式的基础.在实际开发过程中,并不要求所有代码都遵循设计原则,我们要考虑人力.时间.成本.质量,不能刻意追求完美,但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我 ...

  4. UML类图的补充及软件设计原则

    UML类图的补充及软件设计原则 UML 从目标系统的不同角度出发,定义了用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图等 9 种图. 1.uml补充 统一建模语言(Unified ...

  5. 从HTTL模板引擎看软件设计原则

    HTTL (Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似.作者是阿里巴 ...

  6. 最简单直接地理解Java软件设计原则之单一职责原则

    理论性知识 定义 单一职责原则, Single responsibility principle (SRP): 一个类,接口,方法只负责一项职责: 不要存在多余一个导致类变更的原因: 优点 降低类的复 ...

  7. 最简单直接地理解Java软件设计原则之接口隔离原则

    理论性知识 定义 接口隔离原则, Interface Segregation Principle,(ISP). 一个类对应一个类的依赖应该建立在最小的接口上: 建立单一接口,不要建立庞大臃肿的接口: ...

  8. 最简单直接地理解Java软件设计原则之依赖倒置原则

    理论性知识 定义 依赖倒置原则,Dependence Inversion Principle (DIP) 高层模块不应该依赖低层模块.二者都应该依赖其抽象. 抽象不应该依赖细节,细节应该依赖抽象. 针 ...

  9. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...

  10. C#软件设计——小话设计模式原则之:单一职责原则SRP

    前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...

随机推荐

  1. elasticsearch 聚合之 date_histogram 聚合

    目录 1.背景 2.bucket_key如何计算 3.前置知识 4.日历和固定时间间隔 4.1 Calendar intervals 日历间隔 4.2 Fixed intervals 固定间隔 5.数 ...

  2. 保存sklearn中模型的两种方法(pickle、joblib)

    保存sklearn中模型的两种方法(pickle.joblib) from sklearn import svm from sklearn import datasets clf = svm.SVC( ...

  3. MySQL可视化软件(Navicat)部署与使用

    目录 一:可视化软件(Navicat) 1.什么是可视化软件? 2.什么是Navicat? 二:部署MySQL(Navicat) 1.Navicat连接本地MySQL 2.连接MySQL,输入密码,在 ...

  4. 一文速览 Dubbo 3.0

    本文将带你快速了解 Dubbo3 的设计背景.总体架构与核心特性.与典型用户如阿里巴巴 HSF2 的关系等.也可以通过如下部分了解更多: 小白用户,快速浏览 Dubbo3 核心特性: 下一代通信协议 ...

  5. git cherry-pick 同步修改到另一个分支

    我们在开发中有时会遇到,需要将另一个分支部分修改同步到当前分支. 如下图,想把 devA 分支中 commit E 和 F,同步到下面绿色的 devB 分支中. 这时候就可以使用 git cherry ...

  6. week_9(异常检测)

    Andrew Ng 机器学习笔记 ---By Orangestar Week_9 This week, we will be covering anomaly detection which is w ...

  7. 基于 Traefik 的 Basic Auth 配置

    前言 Traefik是一个现代的HTTP反向代理和负载均衡器,使部署微服务变得容易. Traefik可以与现有的多种基础设施组件(Docker.Swarm模式.Kubernetes.Marathon. ...

  8. 学 Rust 要几天?「GitHub 热点速览 v.22.51」

    本周的 GitHub Trending 非常给力,一是解决了 Rust 的学习问题,提供了一个全面的教学课程:二是提供了多个高性能工具,比如,为 PWA 而生的 atrilabs-engine,部署方 ...

  9. 2、postman调试

    Postman接口调试: postman博客参考 Postman是一个API(接口)开发协作平台,其提供了发送请求.检查响应.自动化测试.数据模拟.服务监控.文档分享等一系列与API(接口)开发有关的 ...

  10. MYSQL进阶学习笔记

    MySQL在Linux中的使用: 1.查看mysql在linux的安装版本 mysqladmin –version 2.mysql服务的启动与停止 (1).启动: service mysql star ...