![](https://img-blog.csdnimg.cn/0cf2124fe1414877bb94cec2ac01e1f3.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
文章平均质量分 56
设计模式
@Autowire
这个作者很懒,什么都没留下…
展开
-
策略设计+工厂设计模式解决if-else过多案例
【代码】策略设计+工厂设计模式解决if-else过多案例。原创 2022-10-10 17:08:34 · 484 阅读 · 0 评论 -
12_享元设计模式
享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。FlyWeight 是抽象的享元角色, 他是产品的抽象类, 同时定义出对象的外部状态和内部状态的接口或实现ConcreteFlyWeight 是具体的享元角色,是具体的产品类,实现抽象角色定义相关业务UnSharedConcreteFlyWeight 是不可共享的角色,一般不会出现在享元工厂FlyWeightFactory 享元工厂类,用于构建一个池原创 2022-02-02 13:37:11 · 957 阅读 · 0 评论 -
01_七大设计模式原则
1 七大设计模式原则1 单一职责原则介绍:对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分解为 A1,A2。总结:1 降低类的复杂度,一个类只负责一项职责;2 提高类的可读性,可维护性;3 降低变更引起的风险;4 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单才可以在代码级违反单一职责原则;只有类中方法数量足够少才可以在方法级别保持单一职责原则。pack原创 2022-01-22 10:29:20 · 97 阅读 · 0 评论 -
02_UML类图学习
-表示private #表示protected ~表示default,也就是包权限 _下划线表示static 斜体表示抽象 1 类与类之间关系在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.1 泛化Generalization泛化(Generalization)表示类与类之间的继承关系,接口.原创 2021-11-23 16:38:00 · 232 阅读 · 0 评论 -
03_单例设计模式
1 单例设计模式介绍类的单例设计模式就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得该对象实例的方法(静态方法)。2 单例设计模式八种方式2.1 饿汉式 (静态常量)/** * 静态常量 */class Singleton { // 私有化构造器,外部不可以new对象实例 private Singleton(){} private final static Singleton singleton = new Singlet原创 2022-01-23 11:54:41 · 541 阅读 · 0 评论 -
04_工厂方法模式
看一个披萨的项目:要便于披萨种类的扩展,要便于维护。1) 披萨的种类很多(比如 GreekPizz、CheesePizz 等)2) 披萨的制作有 prepare,bake, cut, box3) 完成披萨店订购功能。违反了设计模式的开闭原则,即对扩展开放、对修改关闭。即当我们给类增加新功能的时候,尽量不修改代码,或者尽可能少修改代码。比如我们这时要新增加一个 Pizza 的种类(Pepper 披萨),只要是订购 Pizza 的代码都需要修改。修改代码可以接受,但是如果我们在其它的地方也有原创 2022-01-23 22:13:07 · 329 阅读 · 0 评论 -
05_原型设计模式
克隆羊问题:现在有一只羊 tom,姓名为: tom, 年龄为:1,颜色为:白色,请编写程序创建和 tom 羊 属性完全相同的 10只羊。优点是比较好理解,简单易操作。在创建新的对象时,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时,效率较低。总是需要重新初始化对象,而不是动态地获得对象运行时的状态, 不够灵活。改进的思路分析思路:Java 中 Object 类是所有类的根类,Object 类提供了一个 clone()方法,该方法可以将一个 Java 对象复制一份,但是需要实现 clone原创 2022-01-24 10:46:09 · 60 阅读 · 0 评论 -
06_建造者模式
1 建造者模式理解建造者模式是将一个复杂的对象的构建与对象的表示分离,使得同样的对象构建过程可以创建不同的对象表示。能够从简单的对象一步一步生成复杂的对象。生成器模式是一种用来逐步构建复杂对象并在最后一步返回对象的创造型模式。建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。解决的问题:方便用户创建复杂的对象(不需要知道实现过程)代码复用性 & 封装性(将对象构建过程和细节进行封装 & 复用)例子:造汽车原创 2022-01-25 10:26:42 · 270 阅读 · 0 评论 -
07_适配器设计模式
1 适配器模式原理适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。适配器有助于采用不同接口的对象之间的合作。 适配器模式属于结构型模式,主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。2 类适配器这一实现使用了继承机制: 适配器同时继承两个对象的接口。基本介绍:(适配器)Adapter 类通过继承 src 类、实现 dst 接口,完成src->dst。以生活中充电器为例来讲解适配器:充电器本身相当于 Adapter,220V 交流电相当于 src (被适配者原创 2022-01-25 14:28:55 · 408 阅读 · 0 评论 -
08_桥接设计模式
现在对不同手机类型的不同品牌的实现(开机、关机、上网、打电话)操作编程,如图:扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类。同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本。解决方案使用桥接模式。桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。问题的根本原因是我们试图在两个独立的维度—原创 2022-01-25 21:17:13 · 182 阅读 · 0 评论 -
09_装饰者设计模式
装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为,动态的将新功能附加到对象上。星巴克咖啡订单项目(咖啡馆):咖啡种类/单品咖啡:Espresso、ShortBlack、LongBlack、Decaf调料:Milk、Soy、Chocolate计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合。...原创 2022-01-27 15:05:51 · 134 阅读 · 0 评论 -
10_组合设计模式
组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。...原创 2022-01-28 10:06:38 · 213 阅读 · 0 评论 -
11_外观设计模式
外观模式(Facade)也叫过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。...原创 2022-01-28 19:06:31 · 236 阅读 · 0 评论 -
Java三种代理模式:静态代理、动态代理和cglib代理
1代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式:即通过代理对象访问目标对象。这样做可以在目标对象实现的基础功能上,扩展目标对象的功能。2静态代理抽象角色:package com.zs.proxy;/** * @author zhaoshuai06 <zhaoshuai06@kuaishou.com> * Created on 2021-06-15 */public interface Subject { public void buyM原创 2021-08-27 12:22:35 · 229 阅读 · 0 评论 -
责任链设计模式
1基本讲解责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。假如你正在开发一个在线订购系统。 你希望对系统访问进行限制, 只允许认证用户创建订单。 此外, 拥有管理权限的用户也拥有所有订单的完全访问权限。简单规划后, 你会意识到这些检查必须依次进行。 只要接收到包含用户凭据的请求, 应用程序就可尝试对进入系统的用户进行认证。 但如果由于用户凭据不正确而导致认证失败, 那就没有必要进行后续检查了。一位同事原创 2021-06-11 11:04:35 · 120 阅读 · 3 评论 -
策略设计模式
1策略模式策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。策略模式建议找出负责用许多不同方式完成特定任务的类, 然后将其中的算法抽取到一组被称为策略的独立类中。名为上下文的原始类必须包含一个成员变量来存储对于每种策略的引用。 上下文并不执行任务, 而是将工作委派给已连接的策略对象。在导游应用中, 每个路线规划算法都可被抽取到只有一个 buildRoute生成路线方法的独立类中。 该方法接收起点和终点作为参数, 并返回路线中途点原创 2021-06-10 11:20:27 · 101 阅读 · 0 评论 -
模板方法模式
1模板方法模式模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。1问题假如你正在开发一款分析公司文档的数据挖掘程序。 用户需要向程序输入各种格式 (PDF、 DOC 或 CSV) 的文档, 程序则会试图从这些文件中抽取有意义的数据, 并以统一的格式将其返回给用户。你发现这三个类中包含许多相似代码,尽管提取和解析不同文件数据的代码不同, 但数据分析的代码却几乎完全一样。 如果能在保持算法结构完整的情况下去除重复代码, 这难道不是一件原创 2021-06-09 21:15:07 · 100 阅读 · 1 评论 -
JUC并发编程(基础入门八)——玩转单例模式
1玩转单例模式饿汉式、DCL懒汉式1饿汉式/** * 饿汉式单例 */public class Hungry { /** * 可能会浪费空间 */ private byte[] data1=new byte[1024*1024]; private byte[] data2=new byte[1024*1024]; private byte[] data3=new byte[1024*1024]; private byte[] data4原创 2021-02-28 11:16:48 · 134 阅读 · 2 评论