栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式七大原则

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式七大原则

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

一、单一职责二、接口隔离三、依赖倒置(依赖倒转)四、里氏替换五、开闭原则六、迪米特法则七、合成复用总结

设计原则的核心思想

提示:以下是本篇文章正文内容,下面案例可供参考

一、单一职责

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

例如:每一种类型的载具都应该负责该类型的职责
违反原则示例:(示例):

public class Text {
    public static void main(String[] args) {

        Vehicle vehicle = new Vehicle();
        vehicle.run("摩托车");
        vehicle.run("汽车");
        vehicle.run("飞机");

    }
}

// 交通工具
class Vehicle {
	
    public void run (String vehicle) {
        System.out.println(vehicle + "在公路上跑。。。。。");
    }
    // 可以在此类加上其他载具的运行方法,虽然没有在类上遵守了单一职责,但是在方法上遵守了单一职责
    // 这称为反单一职责原则
}

二、接口隔离

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

违反原则代码如下(示例):

interface A {
    void one();
    void two();
}

class B implements A{

    @Override
    public void one() {
        System.out.println("one");
    }

	// 实现了不需要的方法
    @Override
    public void two() {
    }
    
}

class C implements A{

	// 实现了不需要的方法
    @Override
    public void one() {
        
    }
    @Override
    public void two() {
        System.out.println("two");
    }
    

}

接口A有两个接口,但是B类只需要用到one接口,C类只需要用到two接口,他们必须实现他们不需要的方法
接口隔离原则应该这样处理,将接口拆分为独立的几个接口,那么B类和C类就可以分别与他们需要的接口建立依赖的关系,这就是接口隔离原则


三、依赖倒置(依赖倒转)
    高层模块不因该依赖低层模块抽象不因该依赖细节,细节因该依赖抽象中心思想是面向接口编程

违反原则代码如下(示例):

class A {


    public void send () {

    }
}

class B {
	// 直接依赖了A类,细节应该依赖抽象
    public void t (A a) {
        a.send();
    }
}

四、里氏替换
    继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然不强制要求所有子类必须遵守这些契约,但是如果子类对这些已经实现的方法进行任意修改,就会对整个继承体系造成破坏继承给程序带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象的耦合,并且父类修改后,所有涉及到子类的功能有可能产生故障如何正确使用继承=>里氏替代

不用随意重写父类已经实现好了的方法


五、开闭原则
    一个软件实体类,模块和函数应该对扩展开放,对修改关闭,用抽象构建框架,用实现扩展细节当软件需要变化是时,尽量通过扩展软件实体的行为变化,而不是通过修改已有代码来实现变化编程中遵守其他原则,以及使用设计模式的目的就是遵守开闭原则

开闭原则代码如下(示例):

interface Shape {
    void draw ();
}

// 绘制形状,对扩展开放,你需要绘制什么形状实现shape接口然后就可以自由绘制了,这就是对扩展开放
class GraphicEditor {
    public void  drawShape (Shape s) {

    }
}

对扩展开放是对软件设计说的,比如开发一款工具,对于使用方来说,他是可以扩展的


六、迪米特法则
    一个对象应该对其他对象保持最少了解类和类关系越密切,耦合度越大迪米特法则又称最少知道原则,即一个类对自己依赖的类知道的越少越好,也就是说,对于依赖的类不管多么复杂,对外除了提供public方法,不对外泄露任何信息迪米特法则还有一个更简单的定义,只与直接朋友通信直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象直接是朋友关系,耦合的方式有很多,依赖,关联,组合,聚合等,其中,我们称出现成员变量,方法参数,方法返回值中的类为直接朋友,而出现在局部变量中的类不是直接朋友,也就是说,陌生的类最好不要以局部变量的形式出现在类的内部
七、合成复用
    原则是尽量使用合成/聚合的方式,而不是使用继承
总结 设计原则的核心思想
    找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起针对接口编程,而不是针对实现编程为了交互对象之间的松耦合设计而努力
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号