Single Yuanz(单一原则)
(一)单一模式定义
一个类,只负责一件事。(例如:老师负责教学,学生负责学习)
(二)单一原则优劣
缺点
- 一个职责的变化可能会削弱或者抑制这个类实现其他职责的能力(例如:张三精通C,C#,Java,而叫他去负责C辅导工作,就埋没了他原有的C#,Java能力
- 当客户端需要该对象的某一个职责时,不得不将其他不需要的职责全都包含进来,从而造成冗余代码或代码的浪费(张三会精通Java,C.C#,一个人能够完成工作,而上面的领导有派了李四(精通C#,Java),这就冗余了人才)
优点
- 单一原则的核心就是控制功能粒度的大小,将对象解耦,提高内聚性(相当于每个功能有自己的工作局域,分工明确,有助于提高工作效率)
- 降低复杂度
- 提高类的可读性
- 提高系统的可维护性
- 变更时引起的风险降低
该图主要表达的内容是:总经理起到引领作用,各部门经理,主管都是本部门的监督者,执行者,只管本部门的事,其它部门不需要管理,这就是一个单一原则。
/// <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(单一原则)相关推荐
- 深入浅出设计模式原则之单一原则(SRP)
下面以两个例子来解释一下单一原则(工程源代码) [案例1]用户权限系统 设计案例用户权限系统(用户.机构.角色管理这些模块),基本上使用的都是RBAC模型(基于角色的访问控制,通过分配和取消角色来完成 ...
- 面向对象设计原则(一)单一原则
面向对象设计原则之单一原则 单一原则是最简单的面向对象设计原则,它用于控制类的粒度大小. 单一原则的定义 单一职责原则定义如下: 单一职责原则(Single Responsibility Princi ...
- 设计模式_01_单一原则
设计模式_01_单一原则 package designPatternOf_01; /*** 单一原则示例:动物呼吸* 引入的问题:鱼不吸空气,吸水*/ public class SinglePrinc ...
- 23种设计模式-单一原则
一.设计模式的目的 1) 代码重用性 (即:相同功能的代码,不用多次编写) 2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 3) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为 ...
- RabbitMq 配置分离 - 职责单一原则
文章目录 RabbitMq 配置分离 - 职责单一原则 1.创建交换机 2.定义队列 3.创建队列工厂向Spring 注册队列Bean 4.指定路由规则 RabbitMq 配置分离 - 职责单一原则 ...
- 单一原则,开放-封闭原则,依赖反转,里氏族替换原则
读书笔记:大话设计模式 单一职责原则 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 例子 一个俄罗斯方块游戏设计思路 其中游戏业务逻辑: 数据的每一项值变化的问题,下落,旋转,碰 ...
- 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle
上篇文章提及到设计模式中应遵循的设计原则,并且列出了设计模式中应当遵循的六大原则. 次篇文章主要讨论单一职责原则. 单一职责原则(SRP): 不要存在多于一个导致类变更的原因.简单的讲,就是一个类或接 ...
- 单一职责原则(Single Responsibility Principle,SRP)
1 简介 定义 不要存在多于一个导致类变更的原因. 特点 一个类/接口/方法只负责一项职责. 优点 降低类的复杂度.提高类的可读性,提高系统的可维护性.降低变更引起的风险. 名字容易让人望文生义,大部 ...
- 【编码魔法师系列_六大原则1】单一职责原则(Single Responsibility Principle)
学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题.设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性.可维护性和可重用性,从而让我们的开发效率更高.通 ...
最新文章
- php 去掉数组相同元素,php怎么去掉数组中重复的元素
- Could not load file or assembly App_Licenses.dll的问题
- 使用Android Studio搭建Android集成开发环境
- 创业者的关键词:坚持、忍耐、积累
- hadoop 实现数据排序
- 【解决】Django下使用sqlite3的相关问题
- 1.Magento的配置系统
- 邮件签名html qq,腾讯企业邮箱发件人名称与个性签名的设置方法
- centos7 keeplive+lvs
- 达观数据推出智能审单机器人,全面提升航运物流效率
- Bilibili宋红康老师MySQL高级篇笔记-架构篇(有完整的md格式笔记,迟点整理好会挂链接)
- 1bit等于多少字节,换算方法?
- java 农历公历转换_Java怎样编程实现农历和阳历转换?
- 智能交通:电子警察系统技术实施方案(ppt)
- 如何制作价目表制作报价单
- 摄像头各参数的意义_如何选择摄像头,需要考虑那些参数
- Maximum Noise Fraction (MNF) 中文翻译
- Prim算法求图的最小生成树(Java)
- Java源码阅读之String(4)
- python中列表概念_详解python列表
热门文章
- 申请免费SSL证书教程之华为云20张免费证书
- Rollup项目的SNARK景观
- 今天是第几天python_今_今是什么意思_今字怎么读_今的含义_今字组词-新东方在线字典...
- c#对使用US7ASCII的oracle存取中文的问题
- 手机设备唯一标识相关概念
- 回路、简单回路、简单路径
- random.shuffle(lst)
- 初级算法-10. 有效的数独
- FLASH烧写(简单概括)
- 【个人博客】Hexo个人博客搭建与配置详细教程 + Fluid主题 + Gitee发布