设计模式
文章平均质量分 54
Honey_小白白
这个作者很懒,什么都没留下…
展开
-
Chain of Responsibility Pattern(责任链模式)
Chain of Responsibility Pattern(责任链模式) 介绍 责任链模式为请求创建了一个接收者对象的链。 让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 相当于有一个请求 分别 沿着 A,B,C传递,直到某一个或者全部处理请求为止。 这种类型的设计模式属于行为型模式。 优点: 将请求的发送者和接收者解耦,降低耦合度 简化了对象。对象不需要知道链的结构 增强给对象指派职责的灵活性,每一个对象有其对应的责任,可以通原创 2021-11-24 15:49:05 · 114 阅读 · 0 评论 -
Decorator(装饰者模式)
Decorator(装饰者模式) 介绍 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结钩, 动态地给一个对象添加一些额外的职责。 就相当于一个 女生 给自己 化妆,戴饰品,并不会改变其本身是一个女性的特点,又修饰了自身 这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装 优点: 装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。 缺点: 多层装饰比较复杂。 注意:原创 2021-11-23 14:53:38 · 331 阅读 · 0 评论 -
Mediator(中介者模式)
Mediator(中介者模式) 介绍 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式属于行为型模式。 优点: 降低了类的复杂度,将一对多转化成了一对一 各个类之间的解耦 符合迪米特原则 缺点: 中介者会庞大,变得复杂难以维护 实现 1、创建聊天室 public class ChatRoom {原创 2021-11-22 11:13:10 · 227 阅读 · 0 评论 -
Facade(外观模式/门面)
Facade(外观模式/门面) 介绍 外观模式(Facade Pattern)隐藏系统的复杂性,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。 这种类型的设计模式属于结构型模式,涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 优点: 解耦, 减少系统相互依赖 提高灵活性、安全性 缺点: 不符合开闭原则,如果要改东西很麻烦,继承原创 2021-11-22 10:15:15 · 391 阅读 · 0 评论 -
Factory(工厂模式)和 Abstract Factory Pattern (抽象工厂模式)
Factory(工厂模式) 介绍 工厂模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式 。 优点: 一个调用者想创建一个对象,只要知道其名称就可以了 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 屏蔽产品的具体实现,调用者只关心产品的接口。 缺点: 每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了原创 2021-11-19 17:26:15 · 222 阅读 · 0 评论 -
Strategy(策略模式)
Strategy(策略模式) 介绍 策略模式中,一个类的行为或算法可以在运行时更改,互相替换。这种类型的设计模式属于行为型模式。 相当于对 if…else 或 switch 进行封装 优点: 可扩展性良好 避免使用多重条件判断 算法或类的行为 可以自由切换 缺点: 策略类会增多 所有的策略类都需要对外暴露 注意事项: 如果一个系统的策略多于四个,就需要考虑使用 混合模式,解决策略类膨胀的问题。 实现: 1、创建一个接口 public interface ShoutS原创 2021-11-18 16:21:51 · 242 阅读 · 0 评论 -
Singleton(单例模式)
Singleton(单例模式) 饿汉模式(常用) /** * 饿汉模式 (常用) * 以空间换时间 不管需不需要用到实例都要去创建实例 * 原理:类加载到内存后,就实例化一个单例,JVM保证线程安全 * 缺点:不管有没有用到,加载类的时候都会创建一个实例 */ public class Mgr1 { private final static Mgr1 INSTANCE = new Mgr1(); private Mgr1() {} public void metho原创 2021-11-12 10:09:39 · 376 阅读 · 0 评论