常用设计模式总结,附完整图解

· 浏览次数 : 0

小编点评

+ Private + getCountry() : String + setCountry(String country) - setCountry(String country) + Country country - private Country country; + setCountry(String country) - Country country + Country country + public + getName() : String + setName(String name) - getName() + String name + public + setCountry(String country) - Country country + getCountry() - String country + private + setCountry(String country) - Country country + default + Country country + static + Country country; + abstract + getCountry() : String + setCountry(String country) - Country country + public + setName(String name) - getName() + String name + public + setCountry(String country) - Country country + getCountry() - String country + protected + getCountry() : String + setCountry(String country) - Country country + public + setName(String name) - getName() + String name + public + setCountry(String country) - Country country + getCountry() - String country + private + setCountry(String country) - Country country + public + getCountry() - String country + abstract + getCountry() : String + setCountry(String country) - Country country + public + setName(String name) - getName() + String name + public + setCountry(String country) - Country country + getCountry() - String country + private + setCountry(String country) - Country country + public + getCountry() - String country + private + setCountry(String country) - Country country + public

正文

UML类图

类图定义规则

属性和方法前加上(+、-、#、留空)分别代表:公开(public)、私有(private)、保护(protected)、缺省(default)

方法括号内为参数类型,冒号后为返回值类型

下划线表示 静态(static),斜体表示 抽象(abstract)

 

类图关系表示法

其中 关联、聚合、组合,比较容易混淆,它们的区别:

关联:描述的是两个独立实体之间的连接,它们可以独立存在。

聚合:描述的是整体和部分之间的关系,部分可以独立于整体存在。

组合:描述的是一种更强的整体和部分关系,部分不能独立于整体存在。

依赖 和 关联 的主要区别在于:

依赖是临时性的,而关联是长期性的。

依赖关系通常表示一个类使用另一个类,而关联关系表示对象之间的结构关系。

 

七个原则

开闭原则

对扩展开放,对修改关闭。

即程序要设计成扩展新功能时,只需添加新代码,而无需修改现有代码。

 

里氏替换原则

子类可以当作父类使用,且替换后不改变运行结果。

 

单一职责原则

一个类只负责一个职责。

 

依赖倒转原则

高层模块不应该依赖底层模块,抽象不应该依赖于细节。

 

接口隔离原则

接口应该小而完备,避免大而臃肿。不因该强迫实现类实现不该有的功能。

 

合成复用原则

在代码复用时,优先使用组合、聚合、关联的方式,其次考虑继承方式。

组合、聚合、关联、继承的区别可参考上面《类图关系表示法》。

 

最少知道原则(别称:迪米特法则

一个类对于其他类知道的越少越好。

 

扩展:高内聚低耦合

要注意,下图是以类的角度。从方法的角度来看,方法之间互调频繁,也是耦合。

 

创建型

单例模式

1.饿汉式

缺点:类加载后立刻创建对象,较占资源。

 

2.懒汉式

优点:按需加载。

缺点:使用锁来保证并发安全,代码较复杂。

 

3.内部类式

优点:懒汉式改进版,使用JVM机制取代了锁,同样能保证并发安全的情况下,代码更简单了。

 

简单工厂模式

优点:客户和具体商品解耦。

缺点:工厂里硬编码所有商品,每次添加新商品需要修改工厂代码,违反开闭原则。

 

工厂方法模式

特点:添加新商品只需新建对应工厂,无需修改其他代码,符合开闭原则。

 

抽象工厂模式

特点:每个品牌工厂可以生产多种类型的商品。

 

建造者模式

定义:将一个对象的建造步骤、顺序、细节进行分离。

抽象建造者:定义构建产品的步骤。

具体建造者:实现每个步骤。

指挥者:决定步骤的执行顺序。

 

结构型

代理模式

定义:通过代理类来访问被代理类。


 

桥接模式

定义:将抽象与实现分离,使它们都可以独立地变化。


 

适配器模式

定义:通过包装,让类兼容特定接口。

 

装饰器模式

定义:通过包装,实现功能动态扩展。

 

行为型

观察者模式

定义:对象可以被订阅,并主动通知订阅者。

 

策略模式

定义:使策略能动态的切换。

 

模板方法模式

定义:将可变的方法延迟到子类实现。

 

状态模式

定义:把类功能按不同状态进行分离。

 

迭代器模式

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

 

责任链模式

定义:多个处理者按序连接,每个处理者决定是否处理请求、是否调用后序。

与常用设计模式总结,附完整图解相似的内容:

常用设计模式总结,附完整图解

UML类图 类图定义规则 属性和方法前加上(+、-、#、留空)分别代表:公开(public)、私有(private)、保护(protected)、缺省(default) 方法括号内为参数类型,冒号后为返回值类型 下划线表示 静态(static),斜体表示 抽象(abstract) 类图关系表示法 其

Spring Boot中的 6 种API请求参数读取方式

使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。 接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那么告诉

gopher常见坑位

在我看来,golnag有许多反直观的设计,而且这些设计通常不能自圆其说,导致gohper一而再再而三的调入陷阱。 网上也有很多gohper总结了一些笔记,我再提炼精简一下,挂在脑图树上便于记忆。 值类型包括:所有integer、所有float、bool、string、数组和structure 引用类

聊聊我认为的分布式、集群实现关键点

基于常见的中间件(Mysql、ElasticSearch、Zookeeper、Kafka、Redis)等分布式集群设计的机制,自己总结了在在集群设计过程中需要考虑的通用问题。 ### 节点通信机制 主节点的增加、删除、通信机制。 ### 路由算法 即数据路由到哪个节点的策略机制。在集群内有多个节点,

MQ消息队列篇:三大MQ产品的必备面试种子题

MQ(Message Queue)作为一种用于实现异步通信的技术,具有重要的作用和应用场景。在面试过程中,MQ相关的问题经常被问到,因此了解MQ的用途和设计原则是必不可少的。本文总结了MQ的常见面试题,包括MQ的作用、产品选型、消息不丢失的保证、消息消费的幂等性、消息顺序的保证、消息的高效读写、分布式事务的最终一致性等方面。通过深入理解这些问题,可以更好地理解MQ的应用和设计,为面试和实际应用提供参考。

万字详解常用设计模式

本文是博主在工作中对常用设计模式的使用经验总结归纳而来分享给大家。 设计模式一共有23种,本文讲解涉及如下: 责任链模式 模板方法模式 发布订阅模式 策略模式 三大分类 业界一般将设计模式分为三大类: 创建型模式:对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。有五种创建型模

不得不说,在很多业务中,这种模式用得真的很香

title: 不得不说,在很多业务中,这种模式用得真的很香 date: 2024-04-24 22:31:58 permalink: /pages/32af5c/ categories: - 《常用设计模式》笔记 tags: - 策略模式 author: name: 老猫 link: https:/

开源框架中的责任链模式实践

责任链模式作为常用的设计模式而被大家熟知和使用。本文介绍责任链的常见实现方式,并结合开源框架如Dubbo、Sentinel等进行延伸探讨。

一文带你读懂设计模式之责任链模式

翻了一下之前刚入职时候的学习笔记,发现之前在熟悉业务代码的时候曾经专门学习并整理过过设计模式中的责任链模式,之前只是对其简单了解过常用的设计模式有哪些,并未结合实例和源码深入对其探究,利用熟悉代码契机进行系统学习并整理文档如下。

聊聊Spring的工厂方法与FactoryBean

概述 工厂方法是比较常见,常用的一种设计模式。FactoryBean是Spring提供的一种Bean注入IOC容器的方式。 工厂方法 在做日常开发时,一般都会避免直接new对象,而且将new的操作丢给IOC容器,但对于第三方系统的集成,我们不太好直接丢给IOC容器,此时可以通过工厂模式, 提供一个工