首页 > 其他分享 >设计模式七个原则

设计模式七个原则

时间:2022-11-30 11:24:19浏览次数:41  
标签:七个 原则 对象 子类 接口 线程 模块 设计模式

程序设计七大原则:

1.单一职责原则

设计的一个类应该专门的负责对应一件事情

2.开放封闭原则

一、开放封闭原则是面向对象所有原则的核心

二、1.对功能扩展开放 2.面向修改代码封闭

三、需求改变时,在不改变软件实体源代码(类、接口、方法等)的前提下,通过扩展功能,使其满足新的需求

3.依赖倒置原则

1.高层模块不应该依赖于底层模块,两个都依赖于抽象类。

高层模块指的是调用者,底层模块就是指被调用者,或者框架。

2.抽象不应该依赖细节,细节应该依赖于抽象。我们要面向接口编程,而不是面向实现编程

3.依赖倒置原则的本质就是通过抽象 使各个类或者模块实现彼此独立,互不影响,实现模块之间的松耦合

4.里氏替换原则:

1.子类可以替换父类

2.所有引用父类对象的地方,都可以使用其子类型代替

3.如果S是T的子类型,则T类型的对象可以替换为S类型的对象

5.接口分离原则:

1.客户端不应该依赖它不需要的接口

2.一个类对另一个类的依赖应该建立在最小接口上。

3.接口尽量细分,不要再一个接口中放很多方法。

6.迪米特原则: 设计类的原则

1.它要求一个对象应该对其他对象有最少的了解(最好只用一些接口或者方法去操作,让类本身去对状态等属性进行保存)

2.降低类之间的耦合

3.这是一个对类创建相关的原则和法则

7.合成复用原则:

1.尽量使用对象组合,而不是继承来达到复用。

可能会有些父类的方法,新生成的子类可能用不到,这个时候就有可能会导致一些问题

继承会出现三个问题:

1.破坏了系统的封装性,基类发生改变,子类的实现也可能会发生改变

2.子类如果不需要某些方法,则系统的耦合性会变高

继承是静态的,不能再程序运行时发生改变

创建型设计模式

1.单例模式

有两种模式

1.懒汉模式:在类的声明阶段直接声明一个静态成员变量并初始化赋空间

2.饿汉模式:做声明判断,当静态成员为null的时候初始化,当其不为null的时候直接给出这个静态成员。

懒汉模式直接不推荐,大概率会造成资源的浪费。饿汉模式的话,在多线程情况下可能会出问题,是线程不安全的。调用方法之前要判断有没有类的实例,如果没有,则创建并返回,如果有了就要返回之前的,而不是直接通过这个静态对象是否为null来判断,这个时候就需要枷锁来解决多线程下,单例不安全的问题。

实现起来也很简单,就创建一个lock来实现就可以了(c#),lock是c#的一个语法糖,相当于一个自带的mutex互斥锁,就不用自己写了。也就是说lock()锁定的代码段当有一个线程正在执行的时候会强行占用这一段,其他进程再来调用这段代码的时候就会进行阻塞,前一个线程结束这段执行的时候,这段代码才会放开,交由排队等待的线程执行这段代码。

image

new指令会执行三个命令 :

1.在内存中开辟空间
2.执行构造函数,创建对象
3.把空间只想我们创建的对象

一般是 执行 123,但是有时候可能会执行 132,这个时候这个new指令就有可能会出问题,当并发量大的时候,就有可能会出问题,会在执行1 3 2 的时候,有可能会返回一个错误的(空)对象

标签:七个,原则,对象,子类,接口,线程,模块,设计模式
From: https://www.cnblogs.com/Leventure/p/16937830.html

相关文章

  • 设计模式之迭代器模式
    概述在软件开发时,经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是......
  • 开闭原则详细介绍
    目录介绍00.问题思考分析01.前沿简单介绍02.如何理解开闭原则03.举一个原始的例子04.修改后的代码05.修改代码违背原则么06.如何做到开闭原则07.如何运用开闭原则08.总结一......
  • 设计模式之解释器模式
    文法规则和抽象语法树解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。在正式分析解释器模式结构之前,先来学习如何表示一......
  • C#设计模式读书笔记之设计模式的设计原则
    设计模式的设计原则:(重要性从上往下排列)开闭原则:对扩展开放,对修改关闭依赖倒转原则:高层模块不应该依赖底层模块,它们都应该依赖抽象;要针对抽象层编程,而不要针对具体类编程。......
  • 开闭原则详细介绍
    目录介绍00.问题思考分析01.前沿简单介绍02.如何理解开闭原则03.举一个原始的例子04.修改后的代码05.修改代码违背原则么06.如何做到开闭原则07.如何运用开闭原则......
  • 联合索引最左匹配原则
    建表语句:CREATETABLE`user`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(30)DEFAULTNULLCOMMENT'名称',`sex`varchar(1)......
  • 安卓设计模式演变之经典三层模型(MVC/MVP/MVVM)
    转载请标明出处!先看代码demo再回看文章效果最佳!目录​​一mvc​​​​1.1概述​​​​1.2 作用流程​​​​1.3 现状​​​​1.4致命弱点/缺点:​​​​1.5 代码Demo​......
  • 低功耗控制系统的基本原则
     低功耗控制系统的基本原则为“非用即关”和“用多少给多少”。 “非用即关”原则主要体现在对物理外设的使用上。例如:对于WiFi外设的使用,如果当前用户没有启动Wi......
  • 设计模式在实际开发中的应用
    我相信有些人学了设计模式,依然不知道设计模式的应用场景,感觉我们日常开发中,仅仅写些逻辑,调下接口,连接下数据库就完事儿了。感觉设计模式都被框架运用的淋淋尽致,似乎没有我们......
  • 谈谈我工作中的23个设计模式
    作者:闵大为(天未)序从基础的角度看,设计模式是研究类本身或者类与类之间的协作模式,是进行抽象归纳的一个很好的速成思路。后面阅读设计模式后,为了加深理解,对相关图片进行......