设计模式】引言-六大设计原则

这篇具有很好参考价值的文章主要介绍了设计模式】引言-六大设计原则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单一职责

● 概念:仅有一个引起其变化的原因。
● 个人理解:一个类中应该是一组相关性很高的函数及数据的封装
主观性较强,和起名一样困难,一个方法放在ClassA合理还是放在ClassB合理?

开闭原则

● 概念:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
● 个人理解:设计模式主要目的之一,就是为了减少耦合,使程序更加容易扩展。
实例
AbstractQueuedSynchronizer的设计,队列同步器的实现及其复杂,但主要流程一致,区别只在于tryAcquire和tryRelease时对同步状态值(state)的判断与处理,所以可以利用模版模式将差异的部分进行抽象,子类根据自身的功能需求来实现。JUC中的各种同步器基本上都是对于AbstractQueuedSynchronizer的扩展,一方面没有破坏对同步队列复杂操作的封装,一方面完成了扩展。

里氏替换法则

● 概念:所有引用基类(父类)的地方必须能透明地使用其子类的对象。
● 个人理解:基于Java的继承机制和多态特性,在加上Java强类型的限制,通常都可以在父类出现的地方合理使用其子类。
实例
在日常编程中随处可见,如呼吸般自然,随便一个例子:

void sort(List l){
 // 排序   
}

public static void main(String[] args){
 sort(new ArrayList());   
}

依赖倒置

● 概念:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程
● 个人理解:面向接口编程,通过替换接口的实现(具体依赖)改变行为,实现灵活扩展
实例

package principle;

public class DIPtest {
    public static void main(String[] args) {
        Customer wang = new Customer();
        System.out.println("顾客购买以下商品:");
        wang.shopping(new ShaoguanShop());
        wang.shopping(new WuyuanShop());
    }
}

//商店
interface Shop {
    public String sell(); //卖
}

//韶关网店
class ShaoguanShop implements Shop {
    public String sell() {
        return "韶关土特产:香菇、木耳……";
    }
}

//婺源网店
class WuyuanShop implements Shop {
    public String sell() {
        return "婺源土特产:绿茶、酒糟鱼……";
    }
}

//顾客
class Customer {
    public void shopping(Shop shop) {
        //购物
        System.out.println(shop.sell());
    }
}

接口隔离

● 概念:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
● 个人理解:接口的抽取要满足单一职责(特性)。
实例

public static void main(String[] args) {
        List<Integer> list=new LinkedList<>(); // 集合
        Deque<Integer> queue=new LinkedList<>(); // 队列
}
LinkedList的接口实现方式
public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

迪米特原则(最少知道)

● 概念:一个软件实体应当尽可能少地与其他实体发生相互作用。
● 个人理解:低耦合。文章来源地址https://www.toymoban.com/news/detail-424146.html

到了这里,关于设计模式】引言-六大设计原则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式和七大原则概述及单一职责原则详解

    设计模式的目的 编写软件过程中,程序员面临着来自,耦合性,内聚性以及可维护性,扩展性,重用性等方面的挑战。设计模式是为了让程序,具有更好的 1.代码重用性(相同代码,不用重复编写) 2.可读性(编程规范性,便于其他程序员的阅读和理解) 3.可扩展性(当需要增加新

    2024年02月12日
    浏览(43)
  • 面向对象设计的六大原则(SOLID原则)-——单一职责原则

    单一职责原则(Single Responsibility Principle, SRP)是面向对象编程和设计的五大SOLID原则之一。它强调一个类、方法或模块应该只有一个职责,即只做一件事情。如果一个类承担的职责过多,那么它的可维护性、可读性和可扩展性都会受到影响。当需要修改类的某个职责时,可能

    2024年03月12日
    浏览(93)
  • 【设计模式之禅】单一职责

    最近前辈推荐我读《设计模式之禅》这本书,原因是我写的代码质量实在是一言难尽,开发速度很快,但是bug数就很多了,设计原则这种知识就需要掌握 写这篇文主要是记录自己的学习以及督促自己 第一章【单一职责】 从我理解的层面来谈谈单一原则:明确每个类每个方法

    2024年02月13日
    浏览(39)
  • 设计模式的六大设计原则

    一个类只负责一个单一明确的职责。如果一个类同时负责多个职责,来自职责A的需求变更引起的修改可能会导致职责B的功能发生故障。 比如说一个类T原本是符合单一职责的,后来因为某种原因或者是需求变更了,需要将职责P细分为颗粒度更细的职责P1和职责P2,这时候可以

    2024年02月09日
    浏览(45)
  • 设计模式之六大设计原则

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年02月02日
    浏览(49)
  • 设计模式——设计模式以及六大原则概述

    设计模式代表有经验的面向对象软件开发人员使用的最佳实践。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。 这些解决方案是由许多软件开发人员在相当长的时间内通过试错获得的。 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四

    2024年02月13日
    浏览(51)
  • 设计模式的六大原则

    1、单一职责原则,其核心就是控制类的粒度大小、将对象解耦、提高其内聚性; 2、开闭原则,可以通过“抽象约束、封装变化”来实现(对扩展开放(提供方),对修改关闭(使用方),遵循其他规则最终就是遵循开闭原则,所以开闭是最重要的一个原则); 3、里氏替换

    2024年02月09日
    浏览(42)
  • C#设计模式六大原则之--接口隔离原则

    设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 接口隔离

    2024年02月11日
    浏览(43)
  • C#设计模式之--六大原则 开闭原则

    设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 开闭原则

    2024年02月10日
    浏览(50)
  • (学习打卡2)重学Java设计模式之六大设计原则

       前言:听说有本很牛的关于Java设计模式的书——重学Java设计模式,然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧,本文主要记录笔者的学习笔记和心得。 打卡!打卡! 单一职责原则、开闭原则、里氏替换原则、迪米特法则、接口隔离原则、依赖倒置原则。 (引读:

    2024年02月03日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包