![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
SSSTing_
这个作者很懒,什么都没留下…
展开
-
Java设计模式 - 策略模式
1. 定义定义了一系列算法族,分别被封装起来,可以相互替换,该模式使得算法的变化独立于客户对其的使用。2. 角色Context:环境类,调用算法的用户 Strategy:抽象策略类。 ConcreteStrategy:具体策略类,每个类封装的算法有所不同。3. 特点优点:算法的选择交由用户决定,增加了系统的灵活性。 缺点:用户需要知道所有算法的不同点以便选择合适的算法,...原创 2020-01-15 20:26:00 · 67 阅读 · 0 评论 -
Java设计模式 - 状态模式
1. 定义允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。2. 角色Context:环境类 State:抽象状态类 ConcreteState:具体状态类3. 特点优点:将所有与某个状态相关的行为放入一个状态类中,可以方便地增加新的状态类,将状态的转换逻辑与状态对象合为一体,封装了转换逻辑,取代了巨大的条件判断块。 缺点:该模式的使用会增加系统类和对象...原创 2020-01-15 20:06:25 · 145 阅读 · 0 评论 -
Java设计模式 - 观察者模式
1. 定义定义了对象之间一对多的依赖,当一个对象改变状态时,它的依赖者会收到通知并自动更新。2. 角色Subject:目标 ConcreteSubject:具体目标 Observer:观察者 ConcreteObserver:具体观察者3. 特点优点:实现了发布者和订阅者的耦合。 缺点:如果订阅者过多的话,发布通知会花费很多时间。4. 示例Subject:...原创 2020-01-15 19:44:45 · 94 阅读 · 0 评论 -
Java设计模式 - 中介者模式
1.定义用一个中介对象来封装一系列的对象交互,该中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2. 角色Mediator:抽象中介者 ConcreteMediator:具体中介者 Colleague:抽象同事类 ConcreteColleague:具体同事类3. 特点优点:可以减少对象之间的交互,使对象解耦,将控制逻辑集中,可以...原创 2020-01-15 19:04:17 · 73 阅读 · 0 评论 -
Java设计模式 - 命令模式
1. 定义将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。该模式也支持可撤销的操作。2. 角色Command:抽象命令类 ConcreteCommand:具体命令类 Invoker:调用者 Receiver:接收者 Client:客户类3. 特点优点:能实现命令的请求者和执行者的解耦,使系统易于扩展,支持宏命令,可将一组命令组合起来使用,可以方...原创 2020-01-13 11:44:10 · 92 阅读 · 0 评论 -
Java设计模式 - 责任链模式
1. 定义使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。2. 角色Handler:抽象处理角色者 ConcreteHandler:具体处理角色者3. 特点优点:将请求的发送者和接收者解耦,易于改变链内成员或改动次序,能够动态地新增或修改责任。 缺点:请求不一定会被执行,当没有...原创 2020-01-13 11:14:39 · 68 阅读 · 0 评论 -
Java设计模式 - 代理模式
1. 定义为另一个对象提供替身或占位符以控制对这个对象的访问。2. 角色Subject:抽象主题类 Proxy:代理主题类 RealSubject:真实主题类3. 特点优点:能够协调调用者和被调用者,降低了系统的耦合度。其中远程代理使得客户端可以访问远程的对象,而远程的服务器可能有更好的计算性能和处理速度,可以加速响应处理客户端请求;虚拟代理可以通过一个小对象代理一个较大...原创 2020-01-12 15:33:57 · 74 阅读 · 0 评论 -
Java设计模式 - 蝇量模式(享元模式)
1. 定义运用共享技术有效地支持大量的细粒度对象的复用。2. 角色Flyweight:抽象蝇量类 ConcreteFlyweight:具体蝇量类 FlyweightFactory:蝇量工厂 3. 特点优点:减少内存中对象的数量,使得相同或相似的对象在内存中可以集中管理。 缺点:该模式需要分离出内部状态和外部状态,使程序的逻辑变得复杂。4. 示例公园里有许...原创 2020-01-12 11:47:21 · 109 阅读 · 0 评论 -
Java设计模式 - 外观模式
1. 定义提供一个统一的接口,用来访问子系统中的一群接口,这个高层接口使得子系统更容易使用。2. 角色Facade:外观类 SubSystem:子系统类3. 特点优点:实现了客户和子系统的松耦合关系,客户通过外观类来对子系统进行操作,因此子系统内部的修改不会影响客户的使用。 缺点:该模式对客户访问子系统类增加了许多限制,降低了系统的灵活性,当增加子系统时,可能需要修改外观...原创 2020-01-11 17:49:27 · 71 阅读 · 0 评论 -
Java设计模式 - 装饰者模式
1. 定义动态地将责任附加到对象上,在扩展功能时,该模式提供了比继承更有弹性的替代方案。2. 角色Component:抽象构件 ConcreteComponent:具体构件 Decorator:抽象装饰类,是抽象构件的子类,内部持有对Component实例的一个引用 ConcreteDecorator:具体装饰类3. 特点优点:用该模式来实现扩展比使用继承灵活,有较好的...原创 2020-01-11 17:12:07 · 53 阅读 · 0 评论 -
Java设计模式 - 组合模式
1. 定义将对象组合成树形结构来表现整体/部分的层次结构,让用户以一致的方式处理个别对象以及对象组合。2. 角色Component:对象声明接口 Leaf:叶子结点类 Composite:容器对象类3. 特点优点:它定义了一个抽象构件类,既可表示叶子对象,又能表示容器对象,使得用户可以仅针对这个抽象构件类操作而无需知道操作对象是叶子对象还是容器对象,清楚地定义了分层次的复...原创 2020-01-11 16:42:20 · 71 阅读 · 0 评论 -
Java设计模式 - 桥接模式
1. 定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。2. 角色Abstraction:抽象类 RefinedAbstraction:扩充抽象类 Implementor:实现类接口 ConcreteImplementor:具体实现类3. 特点优点:分离了抽象接口及其实现部分,提高了系统的可扩充性。 缺点:增加了系统的理解与设计难度。4. 示例笔有许多种...原创 2020-01-11 15:30:04 · 63 阅读 · 0 评论 -
Java设计模式 - 适配器模式
1. 定义将一个类的接口,转换为客户期望的另一个接口,让原本接口不相容的类可以合作无间。2. 角色Target:目标抽象类 Accepter:适配器类 Acceptee:适配者类 Client:客户类3. 特点优点:通过引入一个适配器类来重用现有适配者类,而无需修改原代码,提高了适配者类代码的复用性。 缺点:若使用类适配器,对于Java等语言来说只支持单继承,因此只能...原创 2020-01-11 14:55:25 · 157 阅读 · 0 评论 -
Java设计模式 - 建造者模式
1.定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2.角色Builder:建造者 ConcreteBuilder:具体建造者 Director:指挥者 Product:产品3.特点优点:将产品本身与产品创建过程解耦,每一个具体建造者都相对独立,因此可以方便地替换或新增具体建造者。 缺点:如果产品内部变化复杂,则需要许多具体建造者来应对这...原创 2020-01-09 14:59:52 · 66 阅读 · 0 评论 -
Java设计模式 - 单例模式
目录一、介绍1.定义2.角色3.特点二、实现1.饿汉式(线程安全)2.懒汉式3.懒汉式(双重检查加锁版本)4. 枚举方式5.静态内部类一、介绍1.定义确保类只有一个实例,并提供一个全局访问点。2.角色Singleton:单例类3.特点优点:因为系统内存中只有一个实例,可以节约系统资源,并且减少了因为创建、销毁对象带来的损耗,提高...原创 2020-01-09 13:52:13 · 49 阅读 · 0 评论 -
Java设计模式 - 工厂模式
工厂模式能够将对象的创建和使用解耦,且当创建一个对象的过程繁杂时,又有大量地方需要重复创建该对象,使用工厂模式则可以降低代码的重复率。另外,将对象的创建封装到工厂类,当创建过程发生改变时,可直接修改工厂类,而无需到每个创建对象的地方修改代码,降低了系统的维护成本。目录一、简单工厂模式1.定义2.角色:3.特点4.示例二、工厂方法模式1.定义2.角色3....原创 2020-01-09 13:09:02 · 76 阅读 · 0 评论