超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现。—— 阿里巴巴java开发手册 文章目录 需求: if else 卫语句 需求变更:给我加一个方式,上传到七牛云 简单工厂模式 策略模式 思考一:代理模式和策略模式的区别: 思考二: 需求: 文件上传功能是一个常用的系统功能。那么上传后的文件保存到哪里呢?不同公司综合不同因素,可能会打...

1.基本介绍 状态模式(StatePattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类 状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。比如有一个抽奖活动,在有没有积分时的抽奖行为是不一样的。如果没有积分,则无法抽奖,提示用户积分...

代理模式:为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。代理对象就像是生活中的中介。当我们去买房时,我们不会直接去找房源,而是通过房产中介,通过沟通,选择我们想要的房子。 结构 主要角色 抽象角色。通过接口或抽象类声明真实角色实现的业务方法。 代理角色。实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色。实现抽象角色,定义真实...

中介者模式定义一个封装一组对象如何交互的对象(通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互) 结构 中介者模式的主要角色有: Mediator:抽象中介者,定义了同事对象到中介者对象之间的接口。 ConcreteMediator:具体中介者,实现抽象中介者的方法,它需要知道所有的具体同事类,同时需要从具体的同事类那里接收信息,并且向具体的同事类发送信息。 Colleague:...

观察者模式

设计模式  设计模式  java

  

2019-12-22 11:18:54

1.介绍 观察者模式是一种使用频率非常高的的模式,它最常用的地方就是GUI系统、订阅-发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以GUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品需求的更改,应用界面也会经常性变化,但是业务逻辑基本变化不大,此时GUI系统需要一套机制来应对这种情况,使得UI层与具体逻辑解耦...

对于业务开发来说,业务逻辑的复杂是必然的,随着业务发展,需求只会越来越复杂,为了考虑到各种各样的情况,代码中不可避免的会出现很多if-else。 一旦代码中if-else过多,就会大大的影响其可读性和可维护性。 首先可读性,不言而喻,过多的if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤其是那些没有注释的代码。 其次是可维护性,因为if-else特别多,想要新加一个分支的时候,...

本文参考: https://www.cnblogs.com/jenkinschan/p/5645300.html https://www.cnblogs.com/fengyumeng/p/10842631.html 一、策略模式定义 我们知道一件事可能会有很多种方式来实现它,但是其中总有一种最高效的方式,在软件开发的世界里面同样如此,我们也有很多中方法来实现一个功能,但是我们需要一种简单、高效的方...

适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 适配器模式主要分为三类:类适配器模式、对象适配器模式。 结构 适配器模式的主要角色组成: 目标角色(Target):目标抽角色定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 ...

装饰模式

设计模式  java  设计模式

  

2019-12-27 20:37:12

装饰模式 1.介绍 装饰模式,也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地拓展对象的功能,同时它也是继承关系的一种替代方案之一,在现实生活中你也可以看见很多装饰模式的例子。从人来说,人需要各式各样的一桌,不管穿着什么样,但是对于个人的本质来说是不变的,充其量只是在外面披上一层衣物而已,这就是装饰模式,装饰物也许各不相同但是装饰的对象本质是不变的。 2.定义 动态地给一个...

模板方法模式

设计模式  设计模式  java

  

2019-12-28 13:25:29

模板方法模式 1.介绍 在面向对象开发过程中,通常会遇到这样的问题,我们知道一个方法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变的,例如,执行程序的流程大致如下: 检查代码的正确性 连接相关的类库 编译相关的代码 执行程序 对于不同的程序设计语言,上述4个步骤都是不一样的,但是它们的执行流程是固定的,这类问题的解决方案就...

模式动机与定义 模式动机 考虑这样一个系统,按钮工厂类可以返回一个具体的按钮实例,如圆形按钮、矩形按钮、菱形按钮等。在这个系统中,如果需要增加一种新类型的按钮,如椭圆形按钮,那么除了增加一个新的具体产品类之外,还需要修改工厂类的代码,这就使得整个设计在一定程度上违反了“开闭原则”。 现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过...

模式动机及定义 模式动机 在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看 到的内容和服务或者添加客户需要的额外服务。 通过引入一个新的对象(如远程代理对象)来实现对真实对象的操作或者将新的对象作为真实对象的一个替 身,这种实现机制...

责任链模式 责任链模式属于行为型模式 定义: 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止 每个对象持有对下一个对象的引用,形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求. 模式类图 角色 抽象处理接口:Handler 具体处理类:Concre...

迭代器模式 迭代器模式属于行为型模式,描述的是类之间的关系 定义: 它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节 迭代器模式就是为解决遍历元素而诞生的,java而言,使用java提供的iterator就可以了,不用需要手动去写迭代器 模式类图 角色: 抽象迭代器:Iterator,负责定义访问和遍历元素的接口 具体迭代器:ConcreteIterator,实现Iterat...

简介: 介绍简单工厂(Simple Factory)的概念、使用场景以及详细的分析介绍。 1. 概念 简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例,但它不属于GOF 23 种设计模式。 2. 使用场景 适用于用工厂创建对象较少的场景,只需要关注传入工厂方法的参数,并不需要关心内部具体的实现逻辑。 3.代码实现 我们以在线教育平台为例,在...