(一)单一模式定义

一个类,只负责一件事。(例如:老师负责教学,学生负责学习)

(二)单一原则优劣

缺点

  1. 一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力(例如:张三精通C,C#,Java,而叫他去负责C辅导工作,就埋没了他原有的C#,Java能力
  2. 当客户端需要该对象的某一个职责时,不得不将其他不需要的职责全都包含进来,从而造成冗余代码或代码的浪费(张三会精通Java,C.C#,一个人能够完成工作,而上面的领导有派了李四(精通C#,Java),这就冗余了人才)

优点

  1. 单一原则的核心就是控制功能粒度的大小,将对象解耦,提高内聚性(相当于每个功能有自己的工作局域,分工明确,有助于提高工作效率)
  2. 降低复杂度
  3. 提高类的可读性
  4. 提高系统的可维护性
  5. 变更时引起的风险降低

该图主要表达的内容是:总经理起到引领作用,各部门经理,主管都是本部门的监督者,执行者,只管本部门的事,其它部门不需要管理,这就是一个单一原则。

 /// <summary>/// 总经理/// </summary>public class General { }/// <summary>/// 各部门属性接口/// </summary>public interface Single{/// <summary>/// 前厅部:迎客/// </summary>string Recept { get; set; }/// <summary>/// 销售部:销售/// </summary>string Sale { get; set; }/// <summary>/// 技术部:技术支持/// </summary>string Technology { get; set; }/// <summary>/// 安保部:负责安全/// </summary>string Security { get; set; }/// <summary>/// 财务部:负责财产数据/// </summary>string Finance { get; set; }}/// <summary>/// 部门职责接口/// </summary>public interface Patter{/// <summary>/// 总经理接口/// </summary>/// <param name="Generals"></param>void Reception(General Generals);/// <summary>/// 前台做接待工作/// </summary>void Recept();/// <summary>/// 销售做销售工作/// </summary>void Sales();/// <summary>/// 技术部做技术工作/// </summary>void Technology();/// <summary>/// 安保部做安保工作/// </summary>void Security();/// <summary>/// 财务做财务工作/// </summary>void Finance();}/// <summary>/// 部门属性实现类/// </summary>public class MobibleProperty : Single{public string Recept { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public string Sale { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public string Technology { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public string Security { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public string Finance { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }}/// <summary>/// 部门职责实现类/// </summary>public class MobiblePropertys : Patter{public void Reception(General Generals){throw new NotImplementedException();}public void Sales(){throw new NotImplementedException();}void Patter.Finance(){throw new NotImplementedException();}void Patter.Recept(){throw new NotImplementedException();}void Patter.Security(){throw new NotImplementedException();}void Patter.Technology(){throw new NotImplementedException();}}/// <summary>/// 具体公司/// </summary>public class WYN{private MobibleProperty w_Single;private MobiblePropertys w_Patter;public WYN(MobibleProperty property, MobiblePropertys propertys){w_Single = property;w_Patter = propertys;}}

文章简短,案例简单,不断的学习,才能不断的成长!

Single Yuanz(单一原则)相关推荐

  1. 深入浅出设计模式原则之单一原则(SRP)

    下面以两个例子来解释一下单一原则(工程源代码) [案例1]用户权限系统 设计案例用户权限系统(用户.机构.角色管理这些模块),基本上使用的都是RBAC模型(基于角色的访问控制,通过分配和取消角色来完成 ...

  2. 面向对象设计原则(一)单一原则

    面向对象设计原则之单一原则 单一原则是最简单的面向对象设计原则,它用于控制类的粒度大小. 单一原则的定义 单一职责原则定义如下: 单一职责原则(Single Responsibility Princi ...

  3. 设计模式_01_单一原则

    设计模式_01_单一原则 package designPatternOf_01; /*** 单一原则示例:动物呼吸* 引入的问题:鱼不吸空气,吸水*/ public class SinglePrinc ...

  4. 23种设计模式-单一原则

    一.设计模式的目的 1) 代码重用性 (即:相同功能的代码,不用多次编写) 2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 3) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为 ...

  5. RabbitMq 配置分离 - 职责单一原则

    文章目录 RabbitMq 配置分离 - 职责单一原则 1.创建交换机 2.定义队列 3.创建队列工厂向Spring 注册队列Bean 4.指定路由规则 RabbitMq 配置分离 - 职责单一原则 ...

  6. 单一原则,开放-封闭原则,依赖反转,里氏族替换原则

    读书笔记:大话设计模式 单一职责原则 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 例子 一个俄罗斯方块游戏设计思路 其中游戏业务逻辑: 数据的每一项值变化的问题,下落,旋转,碰 ...

  7. 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle

    上篇文章提及到设计模式中应遵循的设计原则,并且列出了设计模式中应当遵循的六大原则. 次篇文章主要讨论单一职责原则. 单一职责原则(SRP): 不要存在多于一个导致类变更的原因.简单的讲,就是一个类或接 ...

  8. 单一职责原则(Single Responsibility Principle,SRP)

    1 简介 定义 不要存在多于一个导致类变更的原因. 特点 一个类/接口/方法只负责一项职责. 优点 降低类的复杂度.提高类的可读性,提高系统的可维护性.降低变更引起的风险. 名字容易让人望文生义,大部 ...

  9. 【编码魔法师系列_六大原则1】单一职责原则(Single Responsibility Principle)

    学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题.设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性.可维护性和可重用性,从而让我们的开发效率更高.通 ...

最新文章

  1. php 去掉数组相同元素,php怎么去掉数组中重复的元素
  2. Could not load file or assembly App_Licenses.dll的问题
  3. 使用Android Studio搭建Android集成开发环境
  4. 创业者的关键词:坚持、忍耐、积累
  5. hadoop 实现数据排序
  6. 【解决】Django下使用sqlite3的相关问题
  7. 1.Magento的配置系统
  8. 邮件签名html qq,腾讯企业邮箱发件人名称与个性签名的设置方法
  9. centos7 keeplive+lvs
  10. 达观数据推出智能审单机器人,全面提升航运物流效率
  11. Bilibili宋红康老师MySQL高级篇笔记-架构篇(有完整的md格式笔记,迟点整理好会挂链接)
  12. 1bit等于多少字节,换算方法?
  13. java 农历公历转换_Java怎样编程实现农历和阳历转换?
  14. 智能交通:电子警察系统技术实施方案(ppt)
  15. 如何制作价目表制作报价单
  16. 摄像头各参数的意义_如何选择摄像头,需要考虑那些参数
  17. Maximum Noise Fraction (MNF) 中文翻译
  18. Prim算法求图的最小生成树(Java)
  19. Java源码阅读之String(4)
  20. python中列表概念_详解python列表

热门文章

  1. 申请免费SSL证书教程之华为云20张免费证书
  2. Rollup项目的SNARK景观
  3. 今天是第几天python_今_今是什么意思_今字怎么读_今的含义_今字组词-新东方在线字典...
  4. c#对使用US7ASCII的oracle存取中文的问题
  5. 手机设备唯一标识相关概念
  6. 回路、简单回路、简单路径
  7. random.shuffle(lst)
  8. 初级算法-10. 有效的数独
  9. FLASH烧写(简单概括)
  10. 【个人博客】Hexo个人博客搭建与配置详细教程 + Fluid主题 + Gitee发布