设计模式
文章平均质量分 90
设计模式相关内容。
川峰
8年+Android相关工作经验。专注于移动开发领域。
展开
-
常用设计模式全面总结版(Java&Kotlin)
观察者模式也叫。原创 2023-12-31 11:28:30 · 1795 阅读 · 0 评论 -
如何理解面向对象的OO设计原则和设计模式?
高层模块不应该依赖低层模块,二者都应依赖其抽象;抽象不应依赖细节,细节应该依赖抽象。模块间的依赖关系通过接口或抽象类发生,实现类之间不发生直接的依赖关系。开发者不能干预这些生命周期,只能选择在某一个回调中处理。单一职责、开闭原则、里氏替换、接口隔离、依赖倒置。一个类应该仅有一个引起它变化的原因。一个对象应该对其他对象有最少的了解。(知道的太多,可能活不到剧终)。客户端不应该依赖它不需要的接口。面向接口编程,或面向抽象编程。面向接口编程,或面向抽象编程。永远不要过早的依赖细节。接口隔离原则 ISP。原创 2023-12-31 07:38:06 · 1146 阅读 · 0 评论 -
《Kotlin核心编程》笔记:设计模式
主流的创建型模式有:工厂方法模式、抽象工厂模式、构建者模式在有些地方会把工厂模式细分为简单工厂、工厂方法模式以及抽象工厂。这里主要介绍简单工厂的模式,它的核心作用就是通过一个工厂类隐藏对象实例的创建逻辑,而不需要暴露给客户端。典型的使用场景就是当拥有一个父类与多个子类的时候,我们可以通过这种模式来创建子类对象。假设现在有一个电脑加工厂,同时生产个人电脑和服务器主机。我们用熟悉的工厂模式设计描述其业务逻辑:以上代码通过调用类的方法来创建不同的子类对象,这样我们就把创建实例的逻辑与客户端之间实现解耦,当对象创原创 2023-12-17 12:00:00 · 1072 阅读 · 0 评论 -
建造者模式
定义: 将一个复杂产品对象的构建过程与它的表示分离开,从而使同样的创建过程可以创建出不同表示的产品对象。建造者模式又叫做生成器模式,可以定义通俗的理解为:封装一个产品的构建过程,并允许按步骤构造。设计类图: 建造者模式中的角色: ...原创 2018-06-08 09:49:51 · 255 阅读 · 0 评论 -
中介者模式
定义: 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。设计类图: 中介者模式中的角色:Mediator抽象中介者:定义同事类对象到中介者对象的接口,用于各个同事类之间的通信。ConcreteMediator具体中介者:实现了抽象中介者所声明的方法,知晓所有的具体同事类,负责协调各同事对象的交互...原创 2018-06-15 09:15:50 · 234 阅读 · 0 评论 -
责任链模式
定义: 将处理请求的多个对象连成一条链,链上的每个对象都有机会处理该请求,请求会沿着这条链进行传递,直到它被某个对象处理为止。设计类图: 责任链模式的主要角色就是Handler处理者对象,通过类图可以发现它主要有两个特点,一个是可以处理请求的方法,还有就是可以设置下一个处理者对象。示例代码:public abstract class Handler { priv...原创 2018-06-20 00:38:40 · 299 阅读 · 0 评论 -
访问者模式
定义: 在不改变对象数据结构的前提下,定义和封装作用于该数据结构各元素的操作。设计类图: 访问者模式中的角色:Visitor抽象的访问者, 可以是接口或抽象类,声明要操作的具体元素的方法接口,访问者可以有多个。ConcreteVisitor具体的访问者, 实现Visitor的接口方法,实现具体的访问操作。Element抽象的元素, 接口或抽象类,声明接收访问者的方法...原创 2018-06-27 09:06:08 · 203 阅读 · 0 评论 -
桥接模式
定义: 将抽象和实现解耦,使两者可以独立地变化。设计类图: 桥接模式中的角色:Abstraction抽象化角色,定义该角色的行为,持有对实现化角色的引用,一般是抽象类RefinedAbstraction修正抽象化角色,引用实现化角色对抽象化角色进行修正Implementor实现化角色,是一个接口或实现类,定义实现化角色的行为和属性ConcreteImplemento...原创 2018-07-03 09:30:55 · 423 阅读 · 0 评论 -
怎样在实践中正确的应用设计模式
保持简单 当你设计时,尽可能的用最简单的方式解决问题。你的目标应该是简单,而不是“如何在这个问题中应用模式”。千万不要认为:如果没有应用设计模式解决问题,就不是一个经验丰富的开发人员。我们只是说,为了让你的设计更加的简单和具有弹性,有时候应用设计模式是最好的方法。尽量让你的设计保持简单,这样才会让其他开发人员认可你的做法。何时应用设计模式 如果在你的设计中确定某个模式可以解决某个问题,那就...原创 2018-07-03 09:37:46 · 1212 阅读 · 0 评论 -
Java 23种设计模式汇总链接
OO六大设计原则最全总结篇 UML类图之间的关系创建型模式: 工厂方法模式 单例模式 抽象工厂模式 建造者模式 原型模式结构型模式: 适配器模式 桥接模式 装饰者模式 外观模式 组合模式 代理模式 享元模式行为型模式: 策略模式 观察者模式 模板方法 命令模式 迭代器模式 状态模式 中介者模式 责任链模式 备忘录模式 访问者模式 解释器模...原创 2018-07-10 00:56:41 · 349 阅读 · 1 评论 -
23种经典设计模式UML类图汇总
原创 2018-07-10 01:32:47 · 306 阅读 · 0 评论 -
解释器模式
定义: 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。设计类图: 解释器模式中的角色:Expression:抽象表达式,声明一个所有的具体表达式都需要实现的抽象接口;这个接口主要是一个interpret()方法,称做解释操作。Terminal Expression:终结符表达式,实现了抽象表达式所要求的接口;文法中的每一...原创 2018-06-28 01:47:17 · 183 阅读 · 0 评论 -
UML时序图
一、时序图 时序图是一种强调时间顺序的交互图,在时序图中,首先把参与交互的对象放在图的上方,沿X轴方向排列。通常把发起交互的对象放在左边,较下级对象依次放在右边,然后把这些对象发送和接受的消息沿Y轴方向按时间顺序从上到下放置。这样就提供了控制流随着时间推移的清晰的可视化轨迹。二、时序图元素1、角色 系统角色,可以是人、及其甚至其他的系统或者子系统2、对象对象包括三种命名方式: 第一种...转载 2018-07-10 01:57:25 · 2303 阅读 · 0 评论 -
享元模式
定义: 使用共享的方式高效的支持大量的细粒度的对象。享元模式英文名Flyweight,又叫蝇量模式,享元模式主要关注的有两个点:共享对象和细粒度的对象,由于分配太多对象会导致应用性能下降,同时造成内存溢出,享元模式就是为了解决这类问题的共享技术。设计类图: 享元模式中的角色:抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法...原创 2018-06-29 09:46:49 · 399 阅读 · 0 评论 -
备忘录模式
定义: 在不破坏封装性的前提下,捕获对象的内部状态并将其在对象外部存储起来,这样就可以在之后需要的时候将对象恢复到之前保存的状态。备忘录模式又叫快照模式,其实就是一种数据备份的方法机制。 设计类图: 备忘录模式中的三个主要角色:Originator发起人角色:内部状态会发生变化的角色,负责内部创建备份数据和恢复数据状态。Memento备忘录角色: 负责存储发起人的内部...原创 2018-06-22 08:47:40 · 727 阅读 · 0 评论 -
状态模式
定义: 允许一个对象在其内部状态改变时改变它的行为,这个对象看起来就像改变了它的类一样。 状态模式的含义是将对象的状态封装成一个独立的类,并将动作行为委托到代表当前状态的对象,行为会随着内部的状态而改变。状态模式是通过状态对象来改变动作行为,而不同的状态对象里不同的动作行为表现会不一样,这使得它看起来就像在改变它的类一样。设计类图: 状态模式中的角色:Context...原创 2018-05-30 10:05:43 · 6671 阅读 · 4 评论 -
代理模式
定义: 为其他对象提供一个代理来控制对这个对象的访问。 定义比较简单,代理模式又叫做委托模式,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。设计类图: 代理模式中的角色:Subject抽象主题角色,可以是一个抽象类或者接口,Subject定义了代理者和被代理者都要实现的接口。RealSubject具体的被代理者角色,它是真实...原创 2018-06-05 10:31:36 · 377 阅读 · 0 评论 -
策略模式
定义:定义一组算法,将每个算法封装起来,并且使他们之间可以互换。UML类图: 策略模式中的三个角色:Context上下文角色,持有对Strategy策略方法的引用和访问Strategy策略抽象角色,为具体算法提供了抽象方法或属性,在java中可以是接口或者抽象类。ConcreteStrategy具体策略角色,实现了抽象策略角色中的具体操作算法。相关代码:p...原创 2018-04-24 08:54:48 · 384 阅读 · 1 评论 -
OO六大设计原则最全分析总结篇
面向对象(OO)的基本特征:抽象,先不考虑细节封装,隐藏内部实现继承,复用现有代码多态,改写对象行为这几个特征是贯穿于所有的设计原则和所有的设计模式背后的思想,你会发现无论是哪一种设计原则或者设计模式都是在为了满足了其中的某些特征而努力。 OO六大设计原则:单一职责开闭原则里氏替换依赖倒置接口隔离迪米特法则1. 单一职责原则(SRP) 定义...原创 2018-04-20 09:06:14 · 4186 阅读 · 1 评论 -
单例模式
定义: 确保一个类只有唯一的一个实例对象,并向整个系统提供方法访问这个实例。单例模式的重点在于全局维持一个唯一的对象,一般是对使用共享资源的同步控制,同时可以避免重复创建对象以节约资源。示例代码:public class Singleton { /** * 静态私有的成员变量持有Singleton对象的引用 */ private sta...原创 2018-05-09 10:49:46 · 326 阅读 · 0 评论 -
观察者模式
定义: 定义了对象之间的一种一对多的依赖关系,当一个对象状态发生改变时,它的所有依赖者都会收到通知并自动更新。观察者模式也叫发布订阅模式(Publish/subscribe), 类图如下: 观察者模式中的角色主题角色,主题角色就是被观察者,它可以注册或者删除观察者对象,并且持有一个观察者对象的集合,当状态发生变化时,主题可以通知所有注册的观察集合中的每一个观察者进行更新。...原创 2018-04-26 08:51:43 · 350 阅读 · 0 评论 -
命令模式
啊啊原创 2018-05-16 23:28:46 · 190 阅读 · 0 评论 -
适配器模式
定义: 将一个类的接口转换成客户期望的另一个接口,从而使得原本因为接口不兼容而无法一起工作的两个类可以在一起工作。设计类图: 适配器中的角色:目标(Target)角色:客户端所期望的目标接口。源(Adapee)角色:实际需要适配的对象源接口。适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。适配器必须是具体类。示例代码 ...原创 2018-05-17 08:54:26 · 316 阅读 · 0 评论 -
工厂方法模式
定义: 定义了一个创建对象的接口,但是由子类来决定要实例化的是哪一个类。工厂方法使类的实例化延迟到子类中。通用类图: 工厂方法中的角色:Creator抽象的工厂类,提供一个方法可以创建产品类对象,该方法一般是抽象的并由子类去实现ConcreteCreator具体的工厂类,实现Creator中的抽象工厂方法,在该方法中会创造一个具体的产品类对象Product抽象的产品类...原创 2018-05-04 10:55:58 · 326 阅读 · 0 评论 -
抽象工厂模式
定义: 为创建一组相关或依赖的对象提供一个接口,而无需指定它们的具体类。抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道具体的产品是什么。从而使客户从具体的产品中解耦,通用类图设计: AbstractFactory接口提供了一组创建产品的方法,它的实现类ConcreteFactory1和ConcreteFactory2必须实现该方法来创建相关产品,不同的具体工厂...原创 2018-05-11 02:23:07 · 255 阅读 · 0 评论 -
装饰者模式
定义: 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。装饰模式中的角色:抽象构件(Component)角色:Component是一个抽象类或接口,是要包装的原始对象。具体构件(ConcreteComponent)角色:是Component的实现类,最终要装饰的实际对象。装饰(Decorator)角色:是一个抽象类,继承或实现了Compon...原创 2018-04-28 09:09:43 · 5484 阅读 · 4 评论 -
外观模式
定义: 提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。设计类图: 外观模式又叫做门面模式,看上去是一个比较宏观的模式,它包含的两个主要角色:Facade(外观)角色:提供一个外观接口,对外,它提供一个易于客户端访问的接口,对内,它可以访问子系统中的所有功能。SubSystem(子系统)角色:子系统在整个系统中可以是一个...原创 2018-05-21 09:32:41 · 4431 阅读 · 0 评论 -
模板方法模式
定义 在一个方法当中定义一个算法的骨架,而将一些步骤延迟到子类当中。使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板的含义就是一个方法, 这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以确保算法的结构保持不变,由子类提供部分实现。设计类图: 示例代码:public abstract class AbstractT...原创 2018-05-15 08:46:52 · 227 阅读 · 0 评论 -
迭代器模式
定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示。设计类图: 迭代器模式中涉及的角色: 抽象迭代器(Iterator)角色:负责定义遍历和访问元素的接口,是所有迭代器必须实现的接口。具体迭代器(ConcreteIterator)角色:实现迭代器接口,记录目前遍历的位置,完成容器集合元素的遍历。抽象聚合容器(Aggregate)角色:提供一个接...原创 2018-05-22 11:32:37 · 309 阅读 · 0 评论 -
组合模式
定义: 将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户能以一致的方式处理个别对象和组合对象。设计类图: 组合模式中的角色:列表内容 ...原创 2018-05-24 10:42:21 · 9583 阅读 · 3 评论 -
原型模式
定义: 给出一个原型对象实例来指定创建对象的类型,并通过拷贝这些原型的方式来创建新的对象。原型模式是简单程度仅次于单例模式的简单模式,它的定义可以简单理解为对象的拷贝,通过拷贝的方式创建一个已有对象的新对象,这就是原型模式。设计类图: 在原型模式中主要的任务是实现一个接口,这个接口具有一个clone方法可以实现拷贝对象的功能,也就是上图中的ProtoType接口。由于在...原创 2018-06-12 09:47:26 · 3668 阅读 · 1 评论 -
UML类图之间的关系
首先,看懂类图:类(Class) 在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。 接口(Interface) 接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。 类图之间的关系1. 泛化(Generalization)【泛化关系】:是一种继承关系,也称为“is...原创 2018-04-10 23:09:28 · 392 阅读 · 0 评论