设计模式
文章平均质量分 95
常见设计模式详解。
小成同学_
This is your lucky day.
展开
-
设计模式_自定义Spring框架(IOC)
首先我们有一个 BeanFactory 顶级父接口,定义统一的规范;然后我们再搞一个 ApplicationContext 接口继承 BeanFactory,目的就是为了实现非延时加载 BD 对象;然后创建一个 AbstractApplicationContext 子实现类它主要实现非延加载时的功能,也就是 refresh() 方法,它调用了 XmlBeanDefinitionReader#loadBeanDefinitions 方法,这个方法可以加载并解析 xml 文件,将所有 bean 标签封装为原创 2023-01-23 12:22:02 · 1373 阅读 · 0 评论 -
设计模式_行为型模式 -《迭代器模式》
迭代器模式 (Iterator Pattern) 主要包含以下角色:抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合(Concrete Aggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。具体迭代器(Concrete lterator)角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。原创 2023-01-22 13:08:47 · 1536 阅读 · 0 评论 -
设计模式_行为型模式 -《观察者模式》
观察者模式 (Observer Pattern) 中有如下角色:Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。Observer:抽象观察者,是观察者的抽象类,它定义了一个更新接口,使得在得到主题更改通知时更新自己。原创 2023-01-20 11:04:57 · 1492 阅读 · 0 评论 -
设计模式_行为型模式 -《责任链模式》
责任链模式 (Chain of Responsibility Pattern) 主要包含以下角色:抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接(下一个对象的引用)。具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程。现需要开发一个请假流程控制系统。请假原创 2023-01-19 11:33:00 · 1548 阅读 · 0 评论 -
设计模式_行为型模式 -《策略模式》
策略模式 (Strategy Pattern) 的主要角色如下:抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。环境(Context)类:持有一个策略类的引用,最终给客户端调用。【例】促销活动一家百货公司在定年度的促销活动。针对不同的节日(春节、中秋节、圣诞节)推出不同的促销活动,由促销员将促销活动展示给客户。类图如下:原创 2023-01-18 12:15:24 · 524 阅读 · 0 评论 -
设计模式_行为型模式 -《模板方法模式》
模板方法模式 (Template Method Pattern) 包含以下主要角色:抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。基本方法:是实现算法各个步骤的方法,是模板方法的组成部分。基本方法又可以分为三种:抽象方法(Abstract Method):一个抽象方法由抽象类声明、由其具体子类实现。具体方法(Concrete Method):一个具体方法由一个抽象类或具体类声明原创 2023-01-17 11:57:09 · 445 阅读 · 0 评论 -
设计模式_结构型模式 -《装饰器模式》
装饰器模式 (Decorator Pattern) 中的角色:抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件(Concrete Component)角色:实现抽象构件,通过装饰角色为其添加一些职责。抽象装饰(Decorator)角色:继承或实现抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。这个角色就是装饰者。具体装饰(Concrete Decorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。原创 2023-01-16 10:57:08 · 386 阅读 · 0 评论 -
设计模式_结构型模式 -《适配器模式》
适配器模式 (Adapter Pattern) 包含以下主要角色:目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。实现方式:定义一个适配器类来实现当前系统的业务接口,同时又继承现有组件库中已经存在的组件。【例】读卡器现有一台电脑只能读取 SD 卡,而要读取 TF 卡中的原创 2023-01-15 14:35:39 · 451 阅读 · 0 评论 -
设计模式_结构型模式 -《代理模式》
代理模式 (Proxy Pattern) :由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java 中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成而动态代理代理类则是在 Java 运行时动态生成。动态代理又有:JDK 代理CGLib 代理代理(Proxy)模式分为三种角色:抽象主题(Subject)类: 通过接口或抽象类声明真实主题和代理对象实现的业务方法。原创 2023-01-14 13:38:48 · 493 阅读 · 0 评论 -
设计模式_创建型模式 -《建造者模式》
建造者模式 (Builder Pattern) 包含如下角色:抽象建造者类(Builder):这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的部件对象的创建。 具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。在构造过程完成后,提供产品的实例。 产品类(Produc* 产品类(Product):要创建的复杂对象。* 指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责原创 2023-01-13 10:25:26 · 269 阅读 · 0 评论 -
设计模式_创建型模式 -《原型模式》
原型模式 (Prototype Pattern) :用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。结构原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。原型模式的克隆分为浅克隆和深克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象原创 2023-01-12 14:16:38 · 411 阅读 · 0 评论 -
设计模式_创建型模式 -《工厂模式》
在 java 中,万物皆对象,这些对象都需要创建,如果创建的时候直接 new 该对象,就会对该对象耦合严重,假如我们要更换对象,所有 new 对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所以说,工厂模式 (Factory Pattern) 最大的优点就是:解耦。在本教程中会介绍三种工厂的使用:简单工厂模式(不属于 GOF 的 23 种经典设计模式)原创 2023-01-11 11:12:48 · 257 阅读 · 0 评论 -
设计模式_创建型模式 -《单例模式》
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。单例模式 (Singleton Pattern) 是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式的主要有以下角色:单例类:只能创建一个实例的原创 2023-01-10 11:43:50 · 200 阅读 · 0 评论