设计模式与七大设计原则及其关系

大话设计模式:七大设计原则 是软件设计和开发中的重要指导原则,‌它们帮助开发者创建可扩展、‌可维护和灵活的软件系统。‌这些原则包括:‌遵循这些原则可以帮助开发人员创建更加灵活、‌可维护和可扩展的软件系统。 阅读详情

设计模式的目的

解耦合,高内聚,提高程序的可维护性,扩展性,复用性,灵活性

23种设计模式 遵从的原则就是 7大设计原则

7大设计原则

  1. 单一职责原则
  2. 接口隔离原则
  3. 依赖倒置原则
  4. 里氏替换原则
  5. 开闭原则
  6. 迪米特法则
  7. 合成复用原则


单一职责原则

一个模块或一个类,甚至一个方法只应该负责一个功能

  1. 降低类的复杂度
  2. 提高类的可读性和可维护性
  3. 降低代码变动对类的影响产生的风险
  4. 通常应当遵从单一职责原则,只有类中方法很少,逻辑足够简单时,我们可以降低到在类的方法层面上去实现单一职责原则

单一职责原则可以在类的层面上实现,也可以通过方法的层面上实现

接口隔离原则

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

错误示例(上)和正确示例(下)

依赖倒置原则

  1. 高层模块不应该依赖于底层模块,二者都应该依赖于抽象
  2. 抽象不应该依赖于细节,细节应该依赖于抽象

依赖倒置原则的中心思想是面向接口编程

错误示例

class Email{
    public String getInfo(){
        return "Email Message";
    }
}

class Person{
    public void receive(Email email){
        System.out.println(email.getInfo());
    }
}

分析:
该方法较为简单;
但是如果需要获取的信息对象是微信或者QQ,则需要新增类并且还需要修改Person相应的接收方法

改善后的代码:

//新增的接口
interface IReceiver{
    public String getInfo();
}

class Email implements IReceiver{
    public String getInfo(){
        return "Email Message";
    }
}

//新增的微信消息类也只需要实现IReceiver接口即可
class Wechat implements IReceiver{
    public String getInfo(){
        return "Wechat Message";
    }
}

//接收消息类只需要依赖接口,而不需要在增加类时进行方法的修改
class Person{
    public void receive(IReceiver receiver){
        System.out.println(receiver.getInfo());
    }
}

依赖关系的传递在Java开发中有三种方式

  • 接口传递依赖
  • 构造方法传递依赖
  • setter方式传递依赖

接口传递依赖实例代码

interface IOpenAndClose{
    void open(ITV tv);
}

interface ITV{
    void play();
}

class OpenAndClose implements IOpenAndClose{
    public void open(ITV tv){
        tv.play();
    }
}

构造方法传递依赖实例代码

interface IOpenAndClose{
    void open();
}

interface ITV{
    void play();
}

class OpenAndClose implements IOpenAndClose{
    public ITV tv;

    public OpenAndClose(ITV tv){
        this.tv = tv;
    }

    public void open(){
        this.tv.play();
    }
}

setter方法传递依赖实例代码

interface IOpenAndClose{
    void open();
    void setTv(ITV tv);
}

interface ITV{
    void play();
}

class OpenAndClose implements IOpenAndClose{
    private ITV tv;

    public void setTV(ITV tv){
        this.tv = tv;
    }

    public void open(){
        this.tv.play();
    }
}

注意事项
低层模块都要有其对应的抽象类和接口,或者二者都有,这样的代码稳定性更好

里氏替换原则

产生背景

继承在给程序带来遍历的时候,也带来了弊端。继承对于程序有入侵性,增加了对象间的耦合性。如果一个类被其他类继承;当这个类需要修改时,必须要考虑到所有子类;并且当父类修改后,涉及到子类的功能可能产生故障。

  1. 使用继承时,遵从里氏替换原则,在子类中尽量不要重写父类的方法
  2. 继承使两个类的耦合性增强了,在适当的情况下,我们应该通过聚合,组合,依赖来解决问题

错误示例

class A{
    public int fun1(int a,int b){
        return a - b;
    }
}

class B extends A{
    public int fun1(int a,int b){
        return a + b;
    }
}
//B 类 错误 或者 不小心 地重写了父类的方法导致程序错误

修改后的代码

 

class Base{
    //更加基础的方法
}

class A extends Base{
    public int fun1(int a,int b){
        return a - b;
    }
}

class B extends Base{
    private A a = new A();

    public int fun1(int a,int b){
        return a + b;
    }

    //仍然需要A中的fun1,但不需要进行重写
    public int fun3(int a,int b){
        return this.a.fun1(a,b);
    }
}
//这里使用的组合的方法,降低了类之间的耦合度
//同时因为B不再继承于A,因此程序员不会再认为B中fun1像A中一样做减法了

开闭原则

最重要的一个原则,前面的多个原则都是为了实现开闭原则

  1. 一个软件中的类,模块,函数应该对扩展开发(对提供方),对修改关闭(对使用方)
  2. 用抽象构建框架,用实现扩展细节
  3. 当软件需要变化时,最好是通过扩展软件实体来实现,而不是通过修改原有的代码来实现

错误示例

class GraphicEditor{
    public void drawShape(Shape s){
        if(s.m_type == 1){
            drawRectangle(s);
        }else if(s.m_type == 2){
            drawCircle(s);

        //新增的三角形
        }else if(s.m_type == 3){
            drawTriangle(s);
        }
    }

    public void drawRectangle(Shape r){
        System.out.println("绘制矩形");
    }

    public void drawCircle(Shape r){
        System.out.println("绘制圆形");
    }

    //新增的方法
    public void drawTriangle(Shape r){
        System.out.println("绘制三角形");
    }
}

class Shape{
    int m_type;
}

class Rectangle extends Shape{
    Rectangle(){
        super.m_type = 1;
    }
}

class Circle extends Shape{
    Circle(){
        super.m_type = 2;
    }
}

//新增的三角形
class Triangle extends Shape{
    Triangle(){
        super.m_type = 3;
    }
}

从上述代码可以容易的看出,每当要新增一个形状,不只要新增一个类,而且对于Shape的使用方GraphicEditor的内部代码也需要修改,这明显违背了开闭原则

改进后的代码

class GraphicEditor{
    public void drawShape(Shape s){
        s.draw();
    }
}

class Shape{
    int m_type;

    public void draw();
}

class Rectangle extends Shape{
    Rectangle(){
        super.m_type = 1;
    }

    @Override
    public void draw(){
        System.out.println("绘制矩形");
    }
}

class Circle extends Shape{
    Circle(){
        super.m_type = 2;
    }

    @Override
    public void draw(){
        System.out.println("绘制圆形");
    }
}

//新增的三角形
class Triangle extends Shape{
    Triangle(){
        super.m_type = 3;
    }

    @Override
    public void draw(){
        System.out.println("绘制三角形");
    }
}

这样使用方法的代码不会因为新增类的变动而修改代码
现在回头看改善后的依赖倒置原则和该示例非常相近,都是使用一个抽象类(接口)作为一组关联关系的依赖

迪米特法则

  1. 一个类对自己依赖的类所知的越少越好,即被依赖的类不管多复杂都应该进行封装,将一个简单的接口交给其他类来使用

迪米特法则还有一个更加简单的定义:只与直接朋友通信

直接朋友定义:

如果类A中具有一个属性B;
如果类A有一个方法需要变量B;
如果类A有一个方法的返回值为B;

这样的 B 称为 A 的直接朋友

陌生的类最好不要以局部变量的类的形式出现在类的内部
例如:

class A{
    publib void fun1(){
        B b = new B();
    }
}

错误示例

class A{
    public String id;

    public A(String id){
        this.id = id;
    }
}

class B{
    public String id;

    public A(String id){
        this.id = id;
    }
}

class A_Printer{
    public List<A> getA_List(){
        List<A> list = new ArrayList<>();
        for(i=0;i=3;i++){
            A a = new A(i):
            list.add(a);
        }
        return list;
    }
}

class B_Printer{
    public List<B> getB_List(){
        List<B> list = new ArrayList<>();
        for(i=0;i=3;i++){
            B a = new B(i):
            list.add(a);
        }
        return list;
    }

    public void printA_and_B(A_Printer aprinter){
        //printA
        List<A> AList = aprinter.getA_List();
        for(i=0;i=3;i++){
            for(A a:AList){
                System.out.println(a.id);
            }
        }

        //printB
        List<B> BList = this.getB_List();
        for(i=0;i=3;i++){
            for(B b:BList){
                System.out.println(b.id);
            }
        }
    }
}

//简写main函数
main(){
    B_Printer b = new B_Printer();
    b.printA_and_B(new A_Printer);
}

明显可见 List<A> AList 并不是类B的直接朋友,这使得类之间的耦合度上升了
因此需要对这一部分的代码进行修改

修改思路:只需要把不是直接朋友的类那一部分去掉,也就是说注释中 //PrintA 的那一段不应该直接出现在方法printA_and_B中,而应该由类A_Printer实现并通过某个方法直接提供给类B——Printer来使用。

修改后的代码

class A{
    public String id;

    public A(String id){
        this.id = id;
    }
}

class B{
    public String id;

    public A(String id){
        this.id = id;
    }
}

class A_Printer{
    public List<A> getA_List(){
        List<A> list = new ArrayList<>();
        for(i=0;i=3;i++){
            A a = new A(i):
            list.add(a);
        }
        return list;
    }

    public void printA(){
        //printA
        List<A> AList = this.getA_List();
        for(i=0;i=3;i++){
            for(A a:AList){
                System.out.println(a.id);
            }
        }
    }
}

class B_Printer{
    public List<B> getB_List(){
        List<B> list = new ArrayList<>();
        for(i=0;i=3;i++){
            B a = new B(i):
            list.add(a);
        }
        return list;
    }

    public void printA_and_B(A_Printer aprinter){
        //printA
        A.printA();

        //printB
        List<B> BList = this.getB_List();
        for(i=0;i=3;i++){
            for(B b:BList){
                System.out.println(b.id);
            }
        }
    }
}

//简写main函数
main(){
    B_Printer b = new B_Printer();
    b.printA_and_B(new A_Printer);
}

合成复用原则

中心思想:尽量使用合成或者聚合的方式,而不是继承的方式

依赖关系

class B{
    public void fun1(A a){
        a.fun2();
    }
}

聚合关系

class B{
    private A a;

    public void fun1(){
        a.fun2();
    }
}

组合关系

class B{
    private A a = new A();

    public void fun1(){
        a.fun2();
    }
}

设计原则的中心思想

  1. 找出程序中可能需要变化的地方,把它们独立出来,不要和不需要变化的代码混在一起
  2. 针对接口编程,而不是针对实现编程
  3. 为了交互对象之间的松耦合而努力
七大软件架构设计原则详解 详细讲解软件设计领域的七大软件架构设计原则! 阅读详情

相关推荐

《iOS之一起进大厂》系列-秒杀面试官的RunLoop底层原理面试题

Runloop是iOS面试中的必考题,不管大厂小厂都会问到。 这里包括了Runloop几乎所有的面试题,还有中肯完整的答案解释。

空杯子 1153

设计模式原则与设计模式的关系(问gpt-4o)

设计模式是对软件开发中常见问题的解决方案的总结。GoF(Gang of Four)在 1994 年出版的《设计模式:可复用面向对象软件的基础》一书中,正式提出了 23 种经典设计模式。设计模式原则是从软件开发的实践中总结出来的,它们是指导软件设计的基本思想和哲学。这些原则并不是随着设计模式的提出才出现的,而是早在面向对象编程和软件工程发展的过程中逐渐形成的。设计模式是在遵循设计原则的基础上,针对具体问题提出的解决方案。设计模式是对设计原则的具体应用和实践总结,两者相辅相成,共同指导软件开发。

cc729123910的专栏 337

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发

STM32CUBEMX+STM32H750VB+LWIP+LAN8720A+FREERTOS TCP服务器、UDP数据接收发送、网线热插拔、IAR-8.32开发STM32H750VB使用STM32CUBEMX生成工程IAR+J-LINK调试准备工作CUBEMX生成的代码问题所在如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章U

qq_37433166的博客 5345

设计原则与设计模式概述

设计原则与设计模式

文章不设任何条件,如果文章被系统设为VIP可见请联系我修改 628

初识数据之特征选择

【代码】初识数据之特征选择。

M_inherit的博客 1134

第229篇 轨迹时间参数化——TOPP-RA和速度约束处理

本文介绍了时间最优路径参数化(TOPP)问题及其解法。TOPP研究如何在给定空间路径上分配时间,使机器人运动时间最短且不超速,需满足速度、加速度和力矩约束。经典解法采用相平面法,通过前向和后向扫描确定最优速度曲线。TOPP-RA改进了数值稳定性,支持多约束处理。文章对比了TOPP与轨迹优化的区别,列举了开源工具,并解答了面试常见问题,指出TOPP广泛应用于机械臂、AGV等领域。TOPP不改变路径形状,仅优化速度分配,其最优解具有bang-bang特性。

郑伟强dev的专栏 322

Java设计模式的六大设计原则以及他们的关系?

模式名称 定义 单一职责原则 一个类只负责一个区域的相应职责 开闭原则 软件实体对扩展放开,对修改关闭 里氏代换 所有引用基类的地方可以透明的调用到他的子类 依赖注入 抽象不应该依赖于细节,细节应该依赖于抽象 接口隔离 使用多个专门的接口,不要使用总接口 合成复用原则 复用时不要使用继承,尽量使用合成/复合关系 米迪特乐原则 一个软件经历减少于其他实体的相互作用 1.单一职责原则 单一职责原则,一个类、模块、方法承担一个区域的相应职责,避免多个职责相互交叉,导致修...

weixin_42789301的博客 392

Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案

Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案。 找到Android studio的启动文件bin目录,把studio64.exe.vmoptions 删除或改名(推荐改名,方便恢复),如果你是32位系统这个文件就是 studio.exe.vmoptions

陈万洲的专栏 4850

设计模式之类间关系与设计原则

设计模式是软件开发人员在软件开发过程中面临的不断重复的问题的解决方案,是解决特定问题的一系列套路,具有一定的普遍性。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。使用设计模式是为了复用代码、让代码更容易被他人理解、保证代码可靠性。1. 根据目的划分 可分为创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)3 种。 创建型模式:用于描述

欢迎订阅 -- 小源笔迹 644

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

第244篇 视觉SLAM后端之BA优化——Bundle Adjustment的原理

本文介绍了SLAM后端优化中的Bundle Adjustment(BA)技术。BA通过同时优化相机位姿和3D路标点位置,最小化重投影误差,解决前端估计的累积误差问题。文章详细讲解了BA的数学原理,包括目标函数构建、Gauss-Newton法和Levenberg-Marquardt法求解过程,以及利用稀疏性和Schur补加速计算的关键技术。对比了全量BA和增量BA的优缺点,并介绍了Ceres、g2o等工程实现工具。BA作为SLAM后端的核心算法,其理解深度直接影响系统性能优化能力。

郑伟强dev的专栏 347

[Design]设计模式--设计原则及关系

和设计模式相关的是设计原则。设计原则更象是理论,而设计模式是这这理论的具体体现。只有了解了面象对象理论,才可以去学习设计模式。下面是几个基本的设计原则:1. OCP (开放-封闭原则): Software entities should be open for extension,but closed for modifycation.  一 个软件实体应该对扩展开放,对修改关闭. 开闭...

diangang3082的博客 225

MATLAB代码实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响

这段MATLAB代码主要实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响。通过以上步骤,该代码能够找到一条在考虑船舶性能和气象条件下,从大连港到格拉斯通港的较优航线,最小化燃油消耗和航行时间的加权和。

AI的内部世界的博客 513

设计模式之美-02|面向对象、设计原则、设计模式、编程规范、代码重构,这五者有何关系?

二、设计模式之美-02|面向对象、设计原则、设计模式、编程规范、代码重构,这五者有何关系? 一.面向对象 现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。 关于面向对象有七大知识点需要学习掌握: 面向对象的四大特

好好学习天天向上 514

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

设计模式(c++面向对象核心)

设计模式是解决常见软件设计问题的可复用方案模板,不是具体代码而是经过验证的设计思想。学习设计模式能提高代码质量、增强可维护性、提升团队沟通效率,避免重复造轮子。GoF提出的23种设计模式分为创建型、结构型和行为型三类,分别解决对象创建、类组合和对象交互问题。设计模式遵循七大面向对象原则(如单一职责、开闭原则等),这些原则是编写高质量代码的基础。C++通过虚函数、模板、智能指针等特性可高效实现各种设计模式,提升代码复用性和灵活性。

m0_73482095的博客 1125

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【每天一个java设计模式(零)】 - 设计模式基本概念及七大设计原则

设计模式概述 设计模式是什么? 它是软件开发人员在软件开发过程中经过相当长的一段时间的试验和错误总结出来的面临的一般问题的解决方案; 它是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结; 它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。 设计模式能干什么? 实现代码的可重用性 增加代码的可维护性 减低代码的被理解难度 保证代码的可靠性 增加系统的健壮性 易修改可扩展 设计模式七大设计原则 1. 开闭原则 对扩展开放,对修改关闭。当应用的

1+1=王的博客 4285

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

设计模式Java:不懂它,你的代码就是一团乱麻

本教程通过图解+源码方式系统讲解设计模式,解决传统课程晦涩难懂、脱离实践的问题。内容涵盖7大设计原则、UML类图6大关系及23种设计模式(包括单例8种实现、工厂3种模式等),采用Java语言教学。特色在于结合框架源码分析,帮助学员真正掌握设计模式精髓并应用于实际开发,从而提升代码规范性、可维护性和编程思想。适合希望编写优雅高效代码的开发者系统学习。

2603_96171993的博客 323

Java设计模式之七大设计原则

Java设计模式之七大设计原则 本文对Java设计模式中的七大设计原则进行汇总介绍,提炼最核心的概念。 设计模式总结笔记 一、设计模式七大原则 设计模式的目的: 代码可重用性:相同功能的代码,不用多次编写。 可读性:编程规范性,便于其他程序员的阅读和理解。 可扩展性:当需要增加新的功能的时候,非常方便,称为可扩展性。 可靠性:当我们新增功能后,对原来的功能没有影响。 使程序呈现高内聚、低耦合特性。 1.1、单一职责原则 不遵守单一职责原则: 对类来说的,就是一个类应该只负责一项职责。 比如:Us

qq_49529322的博客 1万+

Java设计模式笔记——七大设计原则

面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一,本文就记录了常见7种面向对象设计原则学习笔记。设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于人于系统都是多赢的,它使得代码编写真正工程化,它是软件工程的基石,如同大厦的一块块砖石一样。

想混口饭&的博客 528

设计模式之七大设计原则详解

七大设计原则: 七大设计原则:开闭原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特原则、里氏替换原则、合成复用原则 Java 有三大特性:封装、继承、多态。 而这七大设计原则,更像是对三大特性的一种体现。 七大原则并不是分别独立的原则,他们之间是相互有联系的,甚至可以看做是一体的。 有时候你为了符合某种原则会无意之间破坏另一个原则 有时候你为了符合某种原则还会发现这也符合另外几种原则 开闭原则 对(类、方法)扩展开放,对修改关闭。 开闭原则是七大设计原则中最基础的一个。 我觉得开闭很好理解,但是对 扩

aaa31203的博客 1万+

七大设计原则介绍

古人云: 有道无术,术可求.有术无道,止于术.而设计模式通常需要遵循一些设计原则,在设计原则的基础之上衍生出了各种各样的设计模式。设计原则是设计要求,设计模式是设计方案,使用设计模式的代码则是具体的实现。1、单一职责原则(Single Responsibitity Principle)2、开放封闭原则(Open Close Principle)3、里氏替换原则(Liskov Substitution Principle)

埃泽漫笔 1614

设计模式的七大原则及其分类

什么是设计模式? 设计模式(Design Pattern) ,这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中,后来随着软件工程的发展,设计模式思想被引入到软件工程中。直到今天,狭义的设计模式还是人们广为流传的 23 种经典设计模式。 设计模式(Design pattern)代表了计算机软件工程最佳的实践,是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设...

xcosy 1073

设计模式七大原则

1、设计模式的目的 ​ 编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好 ​ 1) 代码重用性 (即:相同功能的代码,不用多次编写) ​ 2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) ​ 3) 可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护) ​ 4) 可靠性 (即:当我们增加新的功能后,对原来的功能没有影响) ​ 5) 使程序呈现高内聚,低耦合的特性 2、设计模式七大原则 ​ 设计模

java123456111的博客 4834

玄子Share 设计模式 GOF 全23种 + 七大设计原则

此文主要内容为,面向对象七大设计原则(OOD Principle),GOF(Gang Of Four)23种设计模式,拓展的两个设计模式,简单工厂模式(Simple Factory Pattern),空对象模式(Null Object Pattern),以及工厂模式与策略模式(Factory And Strategy Pattern)之间的区别,两个设计模式较为相似,细节上需要分清,每个设计模式都分为了八步介绍,先对设计模式进行简单介绍,尽量一句话概述,方便记忆,再以现实生活中的场景举例,抛出问题解决问题

qq_62283694的博客 3442

设计模式:七大设计原则

绪论: 设计模式是前辈们不断总结,不断打磨出的设计方法,不同设计模式适应于不同的场景 设计模式,公认的有23种设计模式,不同的设计模式适用于不同的场景 设计模式有优点,也有缺点不要为了使用设计模式而使用设计模式,切记防止“模式的滥用” 23种设计模式,其背后是7大设计原则。也就是说,每一个设计模式都归于一个或多个设计原则 7大设计原则的背后又是一个字,分。 7大设计原则,分...

AI梦想家 236
上一篇: Spring框架实现定时调用方法与启动调用方法
下一篇: 考研408思维导图
The_RedMaple
博客等级 码龄7年 375粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值