设计模式:
面向对象语言开发过程中,遇到各种场景和问题,解决方案和思路沉淀下来,就是设计模式。俗称,套路

设计模式的六大原则:
理解为面向对象语言开发过程中推荐的一些指导性的原则,通俗的说是套路的 套路

1.单一职责原则(Single Reponsibility Principle,简称:SRP)
一个类只负责一件事。一个方法也应该只做一件事。
好处:

  1. 阅读简单,易于维护
  2. 扩展升级,减少修改,直接增加类
  3. 代码重用

建议:简单-稳定-强大

成本:类变多了,上端需要了解更多的类。衡量着使用,如果类相对稳定,而且逻辑简单扩展少,违背单一原则也没关系。

一个类,不要让它太累了。如果不同的职责,总是一起变化的,这种一定要分开。

  • 方法层面:方法多个分支,还可能扩展,最好拆分为多个方法
  • 接口层面:也会把不同的功能接口,独立开来
  • 类库层面:把项目拆分为多个类库,重用-方便维护
  • 项目:很多人都是一个web来解决所有问题。

2.里氏替换原则(Liskov Substitution Principle,简称:LSP。)

任何使用基类的地方,都可以透明的使用其子类。

继承:通过继承,子类拥有父类的一切属性和行为,任何父类出现的地方,都可以用子类代替

  1. 子类必须完全实现父类有的方法,如果子类没有父类的某项东西,就断掉继承
  2. 子类可以有父类没有的东西,所以子类出现的地方,不一定能用父类来替代
  3. 透明,就是安全,父类的东西换成子类后不影响程序

1>建议:父类已经实现的东西,不要去隐藏(使用new);

2>父类已经实现的东西,如果想修改,使用virtual+override,避免踩雷

变量,参数,属性,字段,最好都是基于基类的。

3.迪米特法则(Law of Demeter,简称:LOD ):最少知道原则,一个对象应该对其他对象保持最少的了解。

面向对象的单位是类,类与类之间交互,组成功能模块,产生系统。

追求:高内聚,低耦合。通俗理解为高度封装,类与类之间减少依赖。

4.依赖倒置原则(Dependence Inversion Principle,简称:DIP)

  1. 定义:高层模块不应该依赖底层模块,二者应该通过抽象依赖。通俗讲,依赖抽象,而不是依赖细节,面向抽象编程。23种设计模式,80%跟这个有关
  • 依赖细节:程序写死了,不方便扩展
  • 依赖抽象:更具有通用性,而且具备扩展性。系统架构基于抽象来搭建的,会更稳定、更具备扩展性。
  • 面向抽象编程:底层模块尽量都有抽象类/接口,声明参数/变量/属性的时候,尽量都是 接口/抽象类

注意:如果项目不考虑扩展,确实不需要依赖倒置。

5.接口隔离原则(Interface Segregation Principe,简称:ISP)

定义:

  1. 客户端不应该依赖,它不需要的接口
  2. 通俗的理解,一个类对另外一个类的依赖应该建立在最小接口上
  3. 通俗的理解,实现一个接口的时候,只需要自己必须的功能

6.开闭原则(Open Closed Principle,简称:OCP)

  1. 对扩展开放,对修改封闭。通俗的讲,如果有功能扩展变化的需求,希望是增加类而不是修改
  2. 原则的原则,五大原则是手段,这个是目标。这个只是告诉你目标,实现靠其他原则。
  • 因为修改会影响原有功能,引入错误。增加类就不会影响原有的东西

总结:如果要升级一个功能,优先级排序

修改(修改类)---增加方法(修改类)---增加类---新增加新的dll

C#程序设计的6大原则的更多相关文章

  1. 优秀API设计的十大原则

    优秀API设计的十大原则 2015-09-23    分类:编程开发.设计模式.首页精华暂无人评论 分享到:更多4 二十万年薪PHP工程师培养计划 成为被疯抢的Android牛人 风中叶讲Java重难 ...

  2. 第二章 OO大原则

    昨天忙了一天,晚上加班到了12点,虽然工作有时候比较累,但是整体来讲还是比较轻松的,国企加上我是今年才毕业的应届生,导致了现在这种情况.工资也真的不算高...但我觉得最开始还是要踏踏实实一点比较好.学 ...

  3. Atitit 提升进度的大原则与方法  高层方法  attilax总结

    Atitit 提升进度的大原则与方法  高层方法  attilax总结 生产力的提升点 1.1. 管理,管理的发展发展非常缓慢,1 1.2. 方法论(前后分离,dsl等)1 1.3. 工具( 工具链 ...

  4. Atitit 快速开发的推荐技术标准化 规范 大原则

    Atitit 快速开发的推荐技术标准化 规范 大原则 1. 如何评估什么样的技术适合快速开发??1 1.1. (重要)判断语言层次..层次越高开发效率越高  4gl  dsl> 3.5gl &g ...

  5. Java设计模式的6大原则

    Java设计模式的6大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果.简单来 ...

  6. 处理人际关系的5大原则zz

    人际关系题是结构化面试当中重要的题型之一,人们常用两个“70%”来形容人际关系的重要性: 人际关系题主要考察考生不同人际关系间的适应性.人际合作的主动性.处理人际关系的原则性和灵活性以及对组织中权属关 ...

  7. Spring框架4大原则和主要功能

    Spring框架4大原则: 使用POJO进行轻量级和最小侵入式开发 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJ ...

  8. [设计模式](转)Java中的24种设计模式与7大原则

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  9. 6大原则java

    1.开闭原则(Open Close Principle)定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.    开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好 ...

随机推荐

  1. sqlserver limit

    select Loaction.Lat,Loaction.Long from Company order by CompanyId OFFSET 4 ROWS FETCH NEXT 2 ROWS ON ...

  2. Linux磁盘空间查看及空间满的处理

    问题 在部署应用到测试环境的时候,有些文件同步出错,最后定位到测试服务器空间满了. 解决 查看磁盘空间还剩多少空间 df -h 查看根目录下每个目录占用空间大小 du --max-depth=1 -h ...

  3. 附001.Python多版本环境管理

    一 环境背景 由于Python的版本过多,且不同版本之间差异性较大.同时又因系统底层需要调用当前版本Python,所以不能随意变更当前系统Python版本.因此,在多版本共存的情况下,Python多环 ...

  4. 【原创】项目五w1r3s.v1.0

    实战记录 1.nmap信息枚举 1)C段扫描 nmap -sP 192.168.186.0/24 2)扫描全端口信息 nmap -p- 192.168.186.143 3)扫描版本信息 nmap -p ...

  5. 使用PowerShell压缩和解压ZIP包

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月13日. 解压ZIP包 使用PowerShell的Expand-Archive命令.PowerShell官方文档地址. 命令格式: ...

  6. C++ 之多态总结

    前言 最近为了完成数据库系统的实验,又复习起了<C++ Primer>,上一次看这本巨著也是大二下的六月份,那时看面向对象程序编程这一章还云里雾里的,没有领会多态的奥妙,学完 Java 之 ...

  7. CSRF跨站请求伪造与XSS跨域脚本攻击讨论

    今天和朋友讨论网站安全问题,聊到了csrf和xss,刚开始对两者不是神明白,经过查阅与讨论,整理了如下资料,与大家分享. CSRF(Cross-site request forgery):跨站请求伪造 ...

  8. BUUCTF-后门查杀

    后门查杀 后门查杀这种题最好还是整个D盾直接扫描目录方便. 查看文件得到flag

  9. 雪花算法及微服务集群唯一ID解决方案

    雪花算法(SnowFlake) 简介 现在的服务基本是分布式.微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性. 对于 MySQL 而言,一个表中的主键 ...

  10. SAP 实例 13 Random Grouping with LOOP

    REPORT demo_loop_group_by_random. CLASS demo DEFINITION. PUBLIC SECTION. CLASS-METHODS: main, class_ ...