首页 > 编程语言 >Java设计模式的七大基本原则

Java设计模式的七大基本原则

时间:2023-08-07 15:35:37浏览次数:40  
标签:依赖 Java 职责 原则 编程 七大 细节 设计模式

设计模式是为了让程序(软件)具有更好的代码重用性,可读性,可扩展性,可靠性,使程序呈现高内聚,低耦合的特性 设计模式的原则其实就收是程序员在编写时,应当遵守的原则,也是各种模式的基础

(Java设计模式的七大基本原则)

一、单一职责原则

<A> 对类来说的,即一个类应只负责一项职责,如果A负责两个不同的职责:1,2。当1需求变更改变A时,可能造成2执行错误,所以需要将A粒度分解为A1,A2。

单一职责原则注意事项和细节

  1. 降低类的复杂度,一个类只负责一项职责。
  2. 提高类的可读性,可维护性
  3. 降低变更引起的风险
  4. 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级违 反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责原则

二、接口隔离原则

<A>客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上

三、依赖倒置原则

<A> 高层模块不应该依赖底层模块,二者应该依赖其抽象 抽象不应该依赖其细节,细节应实现依赖

依赖倒转原则是面向接口编程 相对与细节的多变性,抽象的东西稳定的多,以抽象为基础搭建的框架比细节为基础的架构要稳定的多。在Java中抽象指的是接口或抽象类,细节就是具体实现。

四、里氏替换原则

<A>尽量不要重写父类的方法,

1.如果对每个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序 P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1 的子类型。换句话说,所有引用基类的地方必须能透明地使用其子类的对象。 2. 在使用继承时,遵循里氏替换原则,在子类中尽量不要重写父类的方法 3.)里氏替换原则告诉我们,继承实际上让两个类耦合性增强了,在适当的情况下,可 以通过聚合,组合,依赖 来解决问题。

五、开闭原则

<A>对扩展开放,对修改关闭

1 开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则 2一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用 方)。用抽象构建框架,用实现扩展细节。 3 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已 有的代码来实现变化。 4)编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则

六、合成复用原则

<A>也就是多用组合,少用继承,

七、迪米特法则

<A>一个对象应该对其他对象保持最少的了解,类与类之间关系越密切,耦合度越大。 又叫最少知道原则,对自己依赖的类知道的越少越好,也就是将逻辑封装在类的内部,对外提供public方法,

更简单的定义:只与直接朋友通性 直接朋友:两个对象之间有耦合,就说是朋友关系 成员变量,方法参数,返回值类型为直接朋友,而局部变量为陌生类 设计模式:代表了最佳的实践,本质是为了提高软件的维护性,通用性和扩展性,降低复杂度。

设计原则核心思想

1)找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代 码混在一起。 2) 针对接口编程,而不是针对实现编程。 3) 为了交互对象之间的松耦合设计而努力

标签:依赖,Java,职责,原则,编程,七大,细节,设计模式
From: https://blog.51cto.com/u_16200113/6994190

相关文章

  • 【Java设计模式004】建造者模式
    大家好,个人gzh是大猪和小猪的小家,我们的gzh是朝阳三只大明白,满满全是干货,分享近期的学习知识以及个人总结(包括读研和IT),跪求一波关注,希望和大家一起努力、进步!!概述首先来看一个例子,假设我们需要建造一个房子,那么必须建造墙、屋顶、地板、门…如果还需要游泳池、健身室,那么该怎么办呢......
  • Java 图片、文件 Base64 互转
    Java图片、文件Base64互转packagecom.thoth.his.base.util;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Base64;publicclassImageUtil{publicStringFileToBase64(StringfilePath)thro......
  • 【转】JAVA中list和原生数组的互相转换
    经常用经常忘转自 javaList和数组相互转换的方法总结_javalist转为数组_great-sun的博客-CSDN博客Java中,可以通过以下方法将List转换为数组:List<String>list=newArrayList<>();String[]array=list.toArray(newString[0]);在这个例子中,我们将一个String类型的List......
  • java读写ini文件
    java读写ini文件1、格式INI文件由节、键、值组成。节[section]参数(键=值)name=value例:[Total]num=1[Server]ip=127.0.0.12、代码封装importorg.apache.commons.configuration.ConfigurationException;importorg.apache.commons.configuration.HierarchicalINIConfiguration;import......
  • java笔试常见的选择题(坑你没商量)
    java笔试常见的选择题(坑你没商量)1.已知表达式intm[]={0,1,2,3,4,5,6};下面那个表达式的值与数组的长度相等()Am.length()B.m.lengthC.m.length()+1D.m.length+1答案:B分析:数组的长度是.length2.下面那些声明是合法的?()Alongl=4990B.inti=4LC.floatf=1.1D.doubled......
  • JavaSwing布局:JPanel(面板)和LayoutManager(布局管理器)
    把Swing的各种组件(JComponent)添加到面板容器中(JPanel),需要给面板容器指定布局管理器(LayoutManager),明确容器(Container)内的各个组件之间的排列布局方式。常用的布局管理器:1流式布局,按组件加入的顺序,按水平方向排列,排满-行换下一行继续排列。2网格布局,把Container按......
  • java中static关键字的作用
    static关键字的作用static可以修饰变量、方法、代码块和内部类static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。static变量和非sta......
  • 【JAVA8】快速理解Consumer、Supplier、Predicate与Function
                 快速理解Consumer、Supplier、Predicate与Function一、前言这几个接口都处在java.util.function包下,Consumer(消费型),Supplier(供给型)、Predicate(判断型)与Function(转换型),暂时不理解他们的类型没关系。如果对Lambda不怎么理解的同学,可以......
  • java读写ini文件
    java读写ini文件1、格式INI文件由节、键、值组成。节[section]参数(键=值)name=value例:[Total]num=1[Server]ip=127.0.0.12、代码封装importorg.apache.commons.configuration.ConfigurationException;importorg.apache.commons.configuration.HierarchicalINIConfiguration;impo......
  • Java根据字段分组求和金额
    如果你有一个数据集,希望按照某个字段进行分组,并计算每个分组中金额的总和,你可以使用Java的StreamAPI来实现。下面是一个示例代码:假设你有一个包含以下数据的类Transaction:publicclassTransaction{privateStringcategory;privatedoubleamount;publicTransa......