常用设计模式与设计原则
文章平均质量分 65
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删
向着百万年薪努力的小赵
当注意力专注于一件事上,岁月就会显得十分轻浮,快的有些过于浪荡——远近书疏,莫不手答,笔翰如流,未尝壅滞
展开
-
设计模式--代理模式详解
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删。代理模式代理模式( Proxy Pattern )是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型模式。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。先看下代理模式通用类图代理模式一般包含三种角色︰抽象主题角色( Subject ):抽象主题类的主要职责是声明真实主题与代理的共同接口方法,该类.原创 2022-04-19 16:04:10 · 608 阅读 · 0 评论 -
设计模式--单例模式详解
单例模式的定义单例模式(Singleton Pattern )是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛,例如,公司CEO、部门经理等。J2EE标准中的ServletContext,ServletContextConfig等、Spring框架应用中的ApplicationContext、数据库的连接池等也都是单例形式。饿汉式单例模式饿汉式单例模式在类加载的时候就立即初始化,并且创建单例对象。它绝对线程安全,在线程还没出原创 2022-04-13 20:43:56 · 2324 阅读 · 0 评论 -
Spring常用设计模式--抽象工厂模式
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删。 抽象工厂模式是指提供一个创建一系列相关或相互依赖对象的接口,无需指定他们的具体类。客户端(应用层)不依赖于产品实体类如何被创建、如何被实现等细节,强调的是一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码。需要提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。 看抽象工厂模式之前,我们要了解两个概念:产品等级结构和产品族.原创 2022-03-15 17:33:33 · 31394 阅读 · 80 评论 -
Spring常用设计模式--工厂方法模式
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删. 工厂方法模式指定义一个创建对象的接口,但让实现这个接口的类决定实例化哪个类,工厂方法模式让类的实例化推迟到子类中进行。在工厂方法模式中用户只需要关心所需产品对应的工厂,无需关心创建细节,而且加入新产品时符合开闭原则。 工厂方法模式主要解决产品扩展的问题。在上一篇简单工厂模式中,随着产品链的丰富,如果每个课程的创建逻辑都有区别,则工厂的职责会变得越来越多,有点像万能工厂,.原创 2022-03-15 16:35:43 · 30824 阅读 · 81 评论 -
Spring常用设计模式--简单工厂模式
工厂模式的由来: 在现实生活中我们都知道,原始社会自给自足(没有工厂)、农耕社会有了小作坊(简单工厂)、工业革命后有了流水线(工厂方法)、现代产业链有代工厂(抽象工厂)等。 我们的项目代码同样是由简到繁一步一步迭代来的,但是对于调用者来说却是越来越简单化了。简单工厂模式: 是指由一个工厂对象决定创建哪一种产品类的实例,但它不属于23种常用设计模式,简单工厂模式适用于工厂类负责创建的对象较少的场景,切客户端只需要传入工厂类的参数,对于如何创建对象不需要关心。 话不多说,以代码举例: 现在原创 2022-03-15 16:03:15 · 31121 阅读 · 89 评论 -
软件架构设计原则--合成复用原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删学习设计原则是学习设计模式的基础。在实际开发中,并不要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量等多方面因素,不能刻意追求完美。但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码。 合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合/聚合而不是继承关系达到.原创 2022-02-21 14:09:07 · 766 阅读 · 0 评论 -
软件架构设计原则--里氏替换原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删 里氏替换原则(Liskov Substitution Principle,LSP)是指,如果对每一个类型为T1的对象t1,都替换为类型为T2的对象t2,使得以T1定义的所有程序P在所有的对象t1都替换成t2时,程序P的行为没有发生变化,那么T2就是T1的子类型。 这个定义看上去比较抽象,我们重新理解一下。可以理解为一个软件实体如果适用于一个父类,那么一定适用于其子类,所有.原创 2022-02-21 11:03:21 · 531 阅读 · 0 评论 -
软件架构设计原则--迪米特原则
本专栏内容参考自:咕泡学院Tom老师的《Spring5核心原理与30个类手写实战》,仅作个人学习记录使用,如有侵权,联系速删 迪米特原则(Law of Demeter,LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。 迪米特原则主要强调:只和朋友交流,不与陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以被称为成员朋友类,二出现在方法体内部的类不属于朋友类。 假设现在来设计.原创 2022-02-21 09:43:30 · 382 阅读 · 0 评论 -
软件架构设计原则--接口隔离原则
接口隔离原则(Interface isolation principle,ISP)是指用多个专门的接口,而不是用单一的总接口,客户端不应该依赖它不需要的接口。 这个原则知道我们在设计接口时应当注意以下几点:一个类对另一个类的依赖应当建立在最小的接口上。建立单一的接口,不要建立庞大臃肿的接口。尽量细化解耦,接口中的方法尽量少(不是越少越好) 接口隔离原则符合我们常说的高内聚、低耦合的设计思想,可以使类具有很好的可读性、可扩展性和可维护性。我们在设计接口的时候,要多花时间去思考,要考虑业务原创 2022-02-20 11:08:01 · 248 阅读 · 0 评论 -
软件架构设计原则--单一职责原则
单一职责(Single responsibility principle,SRP)是指不要存在多于一个导致类变更的原因。 假设我们有一个类负责两个职责,一旦需求发生变更,修改其中一个职责的逻辑代码,有可能导致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。我们需要将这两个职责用两个类来实现,进行解耦。以达到后期需求变更维护时互相互不影响的结果。 这样设计,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更所带来的危险。总体来说就是,一个类、接口、或方法,只负责原创 2022-02-20 10:43:02 · 452 阅读 · 0 评论 -
软件架构设计原则--依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)是只设计代码结构时,高层代码不应依赖低层代码,二者都应依赖其抽象。 抽象不应该依赖细节,细节应该依赖抽象 通过以来倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序所造成的风险。接下来看一个案例,还是以商品Goods为例,先来创建一个类,购买者Buyerpublic class Buyer { public void buyBook(){原创 2022-02-19 16:54:13 · 328 阅读 · 0 评论 -
软件架构设计原则--开闭原则
开闭原则(open-closed Principle,OCP)是指一个软件实体(比如一个类、模块、函数)应该对扩展开放,对修改关闭。 所谓开闭,也正是对口占和修改两个行为的一个原则。它强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。 开闭原则是面向对象设计中最基础的设计原则,它知道我们如何建立稳定、灵活的系统。例如版本更新,我们尽可能地不修改源代码,但是可以增加新功能。 在现实生活中开闭原则也有体现。比如:很多公司都实行弹性工作制,只规定每天工作8小时。意思就是原创 2022-02-19 11:26:34 · 1563 阅读 · 0 评论