
设计模式
文章平均质量分 60
七七r
一枚小白,持续学习....
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
00-设计模式简介
📕设计模式简介设计模式是软件设计中常见问题的典型解决方案。它们就像 能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。算法:总是明确定义达成特定目标 所需的一系列步骤模式:对解决方案的更高层次描述,同一模式在两个不同程序中的实现代码可能会不一样模式的描述通常包括:意图部分简要地描述问题和解决方案动机部分进一步解释问题并说明模式会如何提供解决方案结构部分展示模式的各个部分和它们之间的关系在不同语言中的实现提供流行编程语言的代码,让读者更好地理解模式背后的思想模式的分原创 2022-04-13 07:01:51 · 134 阅读 · 0 评论 -
重学设计模式-Iterator(迭代器模式)
通过以上两个实例,在每个实例中,都出现了相对重要的接口和实现类,这四个关键角色,分别是Iterator(迭代器)、ConcreteIterator(具体的迭代器)、Aggregate(聚合对象)和ConcreteAggregate(具体的聚合对象)。Iterator(迭代器)Iterator是一个接口,它定义了在集合对象上进行迭代的方法hasNext()用于检查是否还有下一个元素next()用于获取下一个元素。ConcreteIterator(具体的迭代器)原创 2023-12-21 11:48:26 · 1260 阅读 · 0 评论 -
14-设计模式——责任链模式
设计模式——责任链模式责任链模式 => Chain Of Responsibility模式定义:为请求创建了一个接收者对象的链使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链发送该请求,直到有一个对象处理它为止。Class DiagramHandler:定义处理请求的接口,并且实现后继链(successor)package com.example.designpatterns.chainofresponsibili原创 2022-04-14 10:04:53 · 121 阅读 · 0 评论 -
13-设计模式——观察者模式
设计模式——观察者模式观察者模式 ==> Observer模式定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者都会收到通知并更新Class Diagram主题(Subject)具有注册(register)和移除(remove)观察者、并通知(notify)所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。应用场景:原创 2022-04-14 09:33:50 · 343 阅读 · 0 评论 -
12-设计模式——模板方法模式
设计模式——模板方法模式模式定义:定义一个操作的算法骨架,而将一些步骤延迟到子类中。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤Class Diagrampackage com.example.designpatterns.templatemethod;/** * @program: DesignPatterns * @description: 模板方法模式 * @a原创 2022-04-14 09:33:18 · 271 阅读 · 0 评论 -
11-设计模式——策略模式
设计模式——策略模式策略模式 ==> Strategy模式定义:定义了算法簇,分别封装起来,让它们之间可以互相替换,此模式的变化独立于算法的使用者策略模式可以让算法独立于使用它的客户端Class DiagramStrategy 接口定义了一个算法族,它们都实现了 behavior() 方法。Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,原创 2022-04-13 17:27:57 · 212 阅读 · 0 评论 -
10-设计模式——装饰器模式
设计模式——装饰器模式装饰器模式 ==> Decorator开闭原则:类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。(对修改关闭,对扩展开放)模式定义:在不改变原有对象的基础上,将功能附加到对象上为对象动态添加功能。装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者原创 2022-04-13 16:11:13 · 368 阅读 · 0 评论 -
09-设计模式——适配器模式
设计模式——适配器模式适配器模式Adapter ==> 解决兼容性问题模式定义:将一个类的接口转换成客户希望的另一个接口Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作Class Diagram对象适配器模式package com.example.designpatterns.adapter.v1;/** * @program: DesignPatterns * @description: 对象适配器模式 V1 * 对象使用组合 * @原创 2022-04-13 15:44:13 · 135 阅读 · 0 评论 -
08-设计模式——门面模式
设计模式——门面模式门面模式 ==> 外观模式模式定义:为子系统中的一组接口提供一个一致统一的接口,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。使用场景:需要使用复杂子系统的有限但直接的接口时将子系统组织成层时优点:简化客户端的调用package com.example.designpatterns.facade;/** * @program: DesignPattern原创 2022-04-13 14:57:08 · 117 阅读 · 0 评论 -
07-设计模式——享元模式
设计模式——享元模式模式定义:运用共享技术有效地支持大量细粒度的对象,,这些对象一部分内部状态是相同的。优点:如果系统有大量类似的对象,可以节省大量的内存及CPU资源Class DiagramFlyweight:享元对象IntrinsicState:内部状态,享元对象共享内部状态ExtrinsicState:外部状态,每个享元对象的外部状态不同package com.example.designpatterns.flyweight;import lombok.AllArgsCon原创 2022-04-13 14:30:48 · 196 阅读 · 0 评论 -
06-设计模式——原型模式
设计模式——原型模式知识点:Cloneable接口/Pbject#clone方法 详解浅拷贝/深拷贝序列化机制实现深拷贝模式定义:指原型实例指定创建对象的种类,并且通过拷贝(复制)这些原型创建新的对象应用场景:当代码不应该依赖于需要复制的对象的具体类时,请使用Prototype模式优点:可以不耦合具体类的情况下克隆对象避免重复的初始化代码更方便的构建复杂对象package com.example.designpatterns.prototype;import cn.原创 2022-04-13 13:21:52 · 415 阅读 · 0 评论 -
05-设计模式——建造者(生成器)模式
设计模式——建造者(生成器)模式生成器Builder:封装一个对象的构造过程,并允许按步骤构造。模式定义:将一个复杂对象的创建与他的表示分离,使得同样的构建过程可以创建不同的表示应用场景:需要生成的对象具有复杂的内部结构需要生成的对象内部属性本身相互依赖与不可变对象配合使用优点:建造者独立、易扩展便于控制细节风险V1复杂版本package com.example.designpatterns.builder.v1;import lombok.Data;/** *原创 2022-04-13 10:57:15 · 156 阅读 · 0 评论 -
04-设计模式—抽象工厂模式
设计模式—抽象工厂模式模式定义:提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类Class Diagram抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。抽象工厂模式用到了工厂方法模式来创建单一对象,AbstractFactory 中的 createProductA() 和 createProductB() 方法都是让子类来实现,这两个方法单独来看就是在创建原创 2022-04-13 09:43:41 · 96 阅读 · 0 评论 -
01-面向对象程序设计
面向对象程序设计概念面向对象程序设计(Object-Oriented Programming,缩写为 OOP)是一种范式,其基本理念是将数据块及与数据相关的 行为封装成为特殊的、名为对象的实体,同时对象实体的生 成工作则是基于程序员给出的一系列“蓝图”,这些“蓝图”就是类。对象和类这是一个类图。假如你有一只名为卡卡的猫。卡卡是一个对象,也是 猫 Cat 这个类的一个实例。每只猫都有许多基本属性: 名字 name 、 性别 sex 、 年龄 age 、 体重 weight 、毛色 color 和原创 2022-04-12 22:12:22 · 485 阅读 · 0 评论 -
02-设计模式——单例模式
设计模式——单例模式通过javap -v -p xxxx.class可以查看对应字节码信息模式定义保证一个类只有一个实例,并且提供一个全局访问点场景:重量级的对象,不需要多个实例,如线程池,数据库连接池懒汉模式1.懒汉模式:延迟加载,只有在真正使用的时候,才开始实例化线程安全问题double check 双重检查,加锁优化编译器(JIT),CPU有可能对指令进行重排序,导致使用到尚未初始化的实例,可以通过添加volatile关键字进行修饰,对于volatile修饰的字段,可以原创 2022-04-12 21:28:27 · 314 阅读 · 0 评论 -
03-设计模式——工厂模式
设计模式——工厂模式模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类Factory Method 使得一个类的实例化延迟到子类应用场景当你不知道该使用对象的确切类型的时候当你希望为库或框架提供拓展内部组件的方法时主要优点:将具体产品和创建者解耦符合单一职责原则符合开闭原则源码中的应用:// 静态工厂方法NumberFormatResourceBundle.getBundle()// 工厂方法 //流协议通用处理java.net.URLStr原创 2022-04-13 09:05:51 · 331 阅读 · 0 评论