DesignPattern
文章平均质量分 81
JFS_Study
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式(Design Pattern)
一、简述设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用、让代码更容易被理解、保证代码可靠性。 设计模式使代码编写真正工程化,是软件工程的基石脉络,如同大厦的结构一样。Java 中有 23 种设计模式,总体来说设计模式分为三大类:【创建型模式】共 5 种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。【结构型模式】共7种:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。【行为型模式】共11种:访问者模原创 2022-01-20 10:32:28 · 581 阅读 · 0 评论
-
观察者模式(Observer Pattern)
一、什么是观察者模式观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象(目标对象)的状态发生改变时,所有依赖于它的对象(观察对象)都得到通知并被自动更新。特点:被观察者和观察者一般是一对多的关系,一个被观察者对应多个观察者,当一个被观察者的状态发生改变时,被观察者通知观察者,然后可以在观察者内部进行业务逻辑的处理。JDK 提供了 一套观察者模式的实现,在java.util包中, java.util.Observable类和java.util.Observer接口。Observa原创 2022-03-04 10:09:58 · 3745 阅读 · 0 评论 -
Future 模式
一、简述该模式的核心思想是异步调用。有点类似于异步的 ajax 请求。当调用某方法时,该方法耗时较久,而在主函数中也不急于立刻获取结果。因此可以让调用者立刻返回一个凭证,该方法放到另外线程执行,后续主函数拿凭证再去获取方法的执行结果即可,其结构图如下:二、通过 FutureTask 实现注意其中两个耗时操作:1.如果 doOtherThing 耗时 2s,则整个函数耗时 2s 左右。2.如果 doOtherThing 耗时0.2s,则整个函数耗时取决于 RealData.costTime,即 1原创 2022-03-04 10:02:26 · 240 阅读 · 0 评论 -
建造者模式(Builder Pattern)
一、什么是建造者模式建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式属于创建型模式,对使用者而言,只需要指定需要建造的类型就可以获得对象,建造过程和细节不需要了解。在实际的开发过程中,使用 Builder Pattern 来替代多参数构造函数是一个比较好的实践法则。建造者模式的概念听上去有点抽象,但是实际上可以这么说,基本上大家都用过,只是可能自己不知道这就是建造者模式而已。二、建造者模式角色1️⃣产品(Product):要创建的产品对象。pub原创 2022-03-03 16:12:24 · 2738 阅读 · 1 评论 -
在 Java 中替换掉繁杂的 if 语句
if else每种编程语言都不可或缺的条件语句,在编程时会大量的用到。一般建议嵌套不要超过三层,如果一段代码存在过多的嵌套,代码的可读性就会急速下降,后期维护难度也大大提高。一、简述通常会遇到一些需要做一系列条件处理的业务逻辑,并且它们每一个都需要不同的处理。来看一下 Calulator(计算器)类的一个例子。下面是带有两个数字类型参数,一个操作符参数以及基于操作的数值返回值的一个方法:public int calculate(int a, int b, String operator) {原创 2022-03-03 15:51:54 · 2260 阅读 · 0 评论 -
策略模式(Strategy Pattern)
一、策略策略,指的是可以实现目标的方案集合,在某些特定情况下,策略之间是可以相互替换的。比如在外卖平台上的这些优惠。满减、会员和红包等,每一个大项优惠都具体包含了多个优惠方案。如满减活动中,可以同时有满28减18、满58减38等。会员包含普通会员、超级会员等。每一个优惠方式下面的多个优惠方案,其实都是一个策略。这些策略之间是相互排斥、可替换的。并且是有一定的优先级顺序的。二、业务场景理解拿点外卖中会员折扣活动举例子来说,平台商家为了促销,设置多种会员优惠,包含超级会员 8 折、普通会员 9 折和普原创 2022-03-03 15:36:46 · 452 阅读 · 0 评论 -
工厂模式(Factory Pattern)
一、概述工厂模式包括简单工厂模式(Simple Factory Pattern)、工厂方法模式和抽象工厂模式,是 Java 中最常用的一类创建型设计模式,它提供了一种创建对象的最佳方式。正如它的名字,可以像工厂一样生产出想要的东西,只要提供原料。在工厂模式中,在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。简单工厂模式是工厂方法模式的“小弟”,它不属于 GoF 23 种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位原创 2022-03-03 14:48:17 · 389 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
一、概述工厂模式包括简单工厂模式(Simple Factory Pattern)、工厂方法模式和抽象工厂模式,是 Java 中最常用的一类创建型设计模式,它提供了一种创建对象的最佳方式。正如它的名字,可以像工厂一样生产出想要的东西,只要提供原料。在工厂模式中,在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来指向新创建的对象。简单工厂模式是工厂方法模式的“小弟”,它不属于 GoF 23 种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位原创 2022-01-21 10:23:43 · 982 阅读 · 0 评论 -
外观模式(Facade Pattern)
一、简述Facade 模式将子系统中的各类(或结构与方法)包装成一个简明一致的界面,目的就是想对外部用户隐藏系统、模块和类的复杂性,提供给用户一个简单易用的使用接口,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。二、作用及应用场景1️⃣作用松散耦合,外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。简单易用,外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。更好的原创 2022-01-20 10:39:13 · 469 阅读 · 0 评论 -
单例模式(Singleton Pattern)
一、简述单例模式是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。即两私一公:①私有的构造函数②私有静态实例属性③公共的获取实例的静态方法。1️⃣注意单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。2️⃣资源加载和性能饿汉式在类创建的同时原创 2022-01-18 16:09:29 · 383 阅读 · 0 评论 -
原型模式(Prototype Pattern)
一、简述原型模式属于对象的创建模式,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意。二、原型模式结构原型模式要求对象实现一个可以克隆自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再通过 new 去创建。原型模式涉及到三个角色:1️⃣客户角色(Client)客户类提出创建对象的请求。原创 2022-01-18 16:01:18 · 294 阅读 · 0 评论 -
Master-Worker模式
一、分而治之严格来讲,分而治之不算一种模式,而是一种思想。它可以将一个大任务拆解为若干个小任务并行执行,提高系统吞吐量。主要讲两个场景,Master-Worker 模式,ForkJoin线程池。该模式核心思想是系统由两类进行协助工作:Master 进程,Worker 进程。Master 负责接收与分配任务,Worker 负责处理任务。当各个 Worker 处理完成后,将结果返回给 Master 进行归纳与总结。假设一个场景,需要计算 100 个任务,并对结果求和,Master 持有 10 个子进程。原创 2022-01-18 10:00:15 · 716 阅读 · 0 评论
分享