代码详解设计模式
用Java代码详细解释各种设计模式
博学de叫兽
这个作者很懒,什么都没留下…
展开
-
代码详解设计模式汇总
待整理篇章小博博客地址原创 2018-12-28 16:55:20 · 10701 阅读 · 1 评论 -
代码详解设计模式--简单工厂模式
写在前面后面小博会整理成专栏并详细解释,目前仅做缓存用。设计模式工厂模式public interface Shape { void draw();}public class Circle implements Shape { @Override public void draw() { System.out.println("画圆"); }}...原创 2018-12-28 16:53:03 · 10614 阅读 · 0 评论 -
代码详解设计模式--抽象工厂模式
简单工厂模式 实例:创建一个形状接口和实现该接口的圆形和方形,然后定义形状工厂。Demo演示类使用工厂来获取不同的形状对象。优点:屏蔽产品的具体实现,调用者只关心产品的接口。扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。缺点:每增加一个形状,都需要增加一个具体类和工厂的 if / else 分支。在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。...原创 2019-01-04 11:39:28 · 11188 阅读 · 0 评论 -
代码详解设计模式--单例模式
抽象工厂模式 实例:除了上篇简单工厂模式画形状的功能,我们还需要给形状涂色,所以还需要有颜色工厂。此时我们将所有工厂抽象出来,设立一个工厂生产器。优点:能保证客户端始终只使用某一个既定的工厂。缺点:工厂扩展非常困难,要增加一个工厂,既要在抽象工厂里加代码,又要在具体工厂生产器里加代码。//形状public interface Shape { void draw();}/...原创 2019-01-04 13:52:05 · 11293 阅读 · 0 评论 -
代码详解设计模式--代理模式
代理模式 代理模式是为了向其他对象提供一种控制本对象访问的途径。优点:职责清晰。高扩展性。智能化。缺点:由于增加了代理对象,可能会造成请求的处理速度变慢。实现代理模式需要额外的工作。public interface Image { void display();}public class RealImage implements Image { ...原创 2019-01-04 14:21:36 · 10796 阅读 · 0 评论 -
代码详解设计模式--模板模式
模板模式 一个抽象类公开定义了执行方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。优点:封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现。缺点:每个不同实现都需要一个子类来实现。//游戏模板类public abstract class Game { abstract void initialize...原创 2019-01-04 14:29:54 · 10556 阅读 · 0 评论 -
代码详解设计模式--中介者模式
中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。优点降低了类的复杂度,将一对多转化成了一对一;各个类之间的解耦;符合迪米特原则。缺点中介者会庞大,变得复杂难以维护。// 聊天室public class ChatRoom { public static void show...原创 2019-03-01 13:38:14 · 10683 阅读 · 0 评论 -
代码详解设计模式--建造者模式
建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。优点建造者独立,易扩展;便于控制细节风险。缺点产品必须有共同点,范围有限制;如内部变化复杂,会有很多的建造类。// 点单public interface Item { public String name(); public Packing packing(); public floa...原创 2019-03-01 13:32:28 · 10932 阅读 · 0 评论 -
代码详解设计模式--观察者模式
观察者模式 观察者模式中,当一个对象被修改时,会自动通知它的依赖对象。优点:观察者和被观察者是抽象耦合的;建立了一套触发机制。缺点:如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。// 被观察者public class Su...原创 2019-03-01 13:06:26 · 10707 阅读 · 0 评论 -
代码详解设计模式--装饰器模式
装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变其结构。// 形状接口public interface Shape { void draw();}// 圆形public class Circle implements Shape { @Override public void draw() { System.out.println("画圆"...原创 2019-02-12 13:58:03 · 10687 阅读 · 0 评论 -
代码详解设计模式--过滤器模式
过滤器模式 允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。最常见的应用如MyBatis中。// 实体@Data@AllArgsConstructorpublic class Person { private String name; private String gender; private String maritalStat...原创 2019-02-12 12:28:12 · 10633 阅读 · 0 评论 -
代码详解设计模式--适配器模式
适配器模式 作为两个不兼容的接口之间的桥梁,结合了两个独立接口的功能。优点可以让任何两个没有关联的类一起运行。提高了类的复用。增加了类的透明度。灵活性好。缺点过多地使用适配器,会让系统非常零乱,不易整体进行把握。// 播放器接口public interface MediaPlayer { public void play(String audioTyp...原创 2019-02-12 12:19:19 · 10881 阅读 · 0 评论 -
代码详解设计模式--策略模式
策略模式 定义一系列的算法,把它们一个个封装起来, 并且使这些算法可以在运行时根据不同需要调整。优点:算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点:策略类会增多。所有策略类都需要对外暴露。// 策略public interface Strategy { public int doOperation(int num1, int num2);...原创 2019-02-12 10:08:14 · 11002 阅读 · 0 评论 -
代码详解设计模式--责任链模式
责任链模式为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。优点降低耦合度。它将请求的发送者和接收者解耦;简化了对象。使得对象不需要知道链的结构;增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任;增加新的请求处理类很方便。缺点不能保证请求一定被接收;系统性能将受到一定影响,而且在进行...原创 2019-03-01 13:52:41 · 10686 阅读 · 0 评论