设计模式
JAVA拾贝
纵横捭阖,冷心为上
展开
-
常用设计模式-策略模式实战
什么是策略模式?常用设计模式-策略模式场景假设有一个支付的业务场景,不同来源的订单要做不同的处理~下面是普通的写法:@Overridepublic String order(Order order) { String result = null; // TODO 省略其他业务处理 if (order.getSource().equals(OrderSourceEnum.ALIBABA.getCode())) { result = "支付宝支付成功原创 2020-12-15 17:19:44 · 8023 阅读 · 0 评论 -
常用设计模式-适配器模式
模式简介将一个类的接口转换成客户希望的另外一个接口。使原本由于接口不兼容而不能一起工作的那些类可以一起工作。这种类型的设计模式属于结构型模式。优点:1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。缺点:1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。 ..原创 2020-11-27 13:15:05 · 22216 阅读 · 0 评论 -
常用设计模式-原型模式
模式简介用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。模式实现1、实现克隆操作,在 JAVA 继承 Cloneable,重写 clone(),在 .NET 中可以使用 Object 类的 MemberwiseClone() 方原创 2020-11-27 10:25:17 · 22331 阅读 · 0 评论 -
常用设计模式-模板方法模式
模式简介模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。该模式的主要优点如下。它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 它在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。该模式的主原创 2020-11-23 11:19:20 · 27151 阅读 · 0 评论 -
常用设计模式-简单工厂
模式简介在三种工厂模式中,简单工厂模式是最基础的一个。该模式的核心思想是把创建对象过程和对象本身业务处理分离。假设需要创建多个对象,每个对象的创建模式比较复杂,那么我们把这些过程放在逻辑代码中,会使得逻辑代码非常混乱;而且每当有新的产品出现,就需要修改逻辑代码,不符合“开闭原则”。但是,该模式使得工厂的负担过重,而且每次添加新产品,都需要修改工厂,不是很符合开闭原则,但是比直接在业务逻辑里添...原创 2019-05-13 10:34:59 · 32256 阅读 · 0 评论 -
常用设计模式-工厂方法
模式简介工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:1. 简单工厂模式(Simple Factory)2. 工厂方法模式(Factory Method)3. 抽象工厂模式(Abstract Factory)工厂方法模式是对简单工厂模式的抽象升级,定义一个用于创建对象的接口,让子类决定实例哪个类。工厂方法使一个类实例化延迟到其子类。与简单工厂模式相比,简单工厂模式使得工厂的负担过重,而且每次添加新产品,都需要修改工厂,不符合开闭原则。工厂方法模式原创 2020-11-19 14:12:05 · 30699 阅读 · 0 评论 -
常用设计模式-抽象工厂
模式简介工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:1. 简单工厂模式(Simple Factory)2. 工厂方法模式(Factory Method)3. 抽象工厂模式(Abstract Factory)工厂方法模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。在抽象工厂模式中,接口是负责创建一原创 2020-11-19 17:18:48 · 30575 阅读 · 0 评论 -
常用设计模式-策略模式
模式简介它定义了算法家族,分别封装起来,让它们间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。模式实现环境类(Context)用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。抽象策略类(Strategy)定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。具体策略类(ConcreteStrategy)以Strategy...原创 2020-11-20 09:51:54 · 29851 阅读 · 0 评论 -
JAVA - 设计模式整理
前言介绍 写本文的目的仅为了对设计模式学习做个总结,同时也为了后期重温做个记录。相关代码都已发布在GitHub,个人能力有限,如有不恰当的地方欢迎批评指正(QQ交流群: 132381997)。最后对参考的网络作者表示感谢,相关引用文中都已标明出处,如涉及侵权,请及时联系本人,感谢!一、什么是设计模式 ...原创 2019-10-11 13:50:01 · 32033 阅读 · 0 评论 -
常用设计模式-单例模式
模式简介保证一个类仅有一个实例,并提供一个访问它的全局访问点。实际应用场景Spring中的BeanUML类图talk is cheap, show me the codepackage com.aeert.design.singleton;import lombok.NoArgsConstructor;/** * 懒汉,线程不安全 * 这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。 **/@NoArgsConstructorp.原创 2020-11-20 16:32:32 · 29656 阅读 · 0 评论