
设计模式
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
设计模式在工作中的实践
来源:https://www.cnblogs.com/chopper-poet/p/12626768.html大多数时候我都是写一些业务代码,可能一堆CRUD就能解决问题,但是这样的工作对技术人的提升并不多,如何让自己从业务中解脱出来找到写代码的乐趣呢,我做过一些尝试,使用设计模式改善自己的业务代码就是其中的一种。设计模式实践责任链设计模式责任链设计模式定义请求在一个链条上处理,链条上的受理者处理完毕之后决定是继续往后传递还是中断当前处理流程。适用场景适用于多节点的流程处理,.转载 2020-09-12 13:30:13 · 527 阅读 · 0 评论 -
新来的“大神”用策略模式把if else给“优化”了,技术总监说:能不能想好了再改?
我想大家肯定都或多或少的看过各种“策略模式”的讲解、布道等等,这篇文章就是来好好“澄清”一下策略模式,并尝试回答以下的问题: 策略模式是如何优化业务逻辑代码结构的? 杀鸡焉用宰牛刀?就是几个if else场景我需要用到策略模式?! 有没有什么更好的代码结构来实现策略模式的吗? 策略模式是如何优化业务逻辑代码结构的?要回答这个问题,我们还得先扒一扒策略模式的定义,从定义着手来理解它策略模式的教科书定义它的定义很精简:一个类的行为或其算法可以在运行时更改。我们把它降维到转载 2020-06-24 17:44:59 · 504 阅读 · 0 评论 -
业务代码中,太多 if else 怎么办?
前段时间,我将公司系统中的批量审单的功能进行了重构,用到了java的并发编程进行异步化处理,数据库的乐观锁机制处理多线程并发更新数据。其中批量审单的业务处理涉及到多种任务类型,对应不同的业务方法进行处理,比如转仓,转快递,添加赠品,删除赠品,拆分订单,批量驳回,批量作废等等,其中就用到了策略模式。if else模式if("BATCH_CHANGE_WAREHOUSE".equals(taskType)){//批量转仓逻辑}else...转载 2020-06-10 21:07:43 · 735 阅读 · 0 评论 -
打死都要记住!微服务架构的常用设计模式!
作者:duanxz来源:cnblogs.com/duanxz/p/3514895.html大家好,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许我休息一下哈)。今天跟大家分享微服务架构的常用设计模式的知识。1 聚合器微服务设计模式这是一种最常用也最简单的设计模式,如下图所示:聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数...转载 2020-04-08 21:30:00 · 413 阅读 · 0 评论 -
设计模式在外卖营销业务中的实践
业务策略多变导致需求多变,是业界很多技术团队面临的最具挑战的问题之一。那么如何设计一套易于扩展和维护的营销系统呢?今天的文章来自美团外卖营销技术团队,他们分享了从领域模型到代码工程之间的转化,从DDD引出了设计模式,并详细介绍了工厂方法模式、策略模式、责任链模式以及状态模式这四种模式在美团营销业务中的具体实现,将理论与实践进行了一次深度结合。一、前言随着美团外卖业务的不断迭代与...转载 2020-03-20 16:17:38 · 437 阅读 · 0 评论 -
解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
前言在之前文章说到,简单 if-else,可以使用 卫语句 进行优化。但是在实际开发中,往往不是简单 if-else 结构,我们通常会不经意间写下如下代码:-------------------- 理想中的 if-else --------------------public void today() { if (isWeekend()) { System.o...转载 2020-01-17 17:03:12 · 228 阅读 · 0 评论 -
六种微服务架构的设计模式
1 聚合器微服务设计模式这是一种最常用也最简单的设计模式,如下图所示:聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可...转载 2019-12-16 09:24:01 · 518 阅读 · 0 评论 -
Java中的门面设计模式,非常有用!
门面设计模式又叫外观设计模式,其核心思想正如其字面意思,向用户提供一个门户,用户只需要访问这个门户来获取他们想要的数据,无需管理这个门户内部的构成,也无需知道里面的运行流程等等,对于开发者来说,使用门面模式,我们可以只向用户提供他们想要的东西,而不要暴露所有的信息。上面的摘要简单描述了一下门面设计模式的思想,下面我们通过日常生活中的例子来帮助大家理解这一思想:大家都知道,一个电脑的主机是由...转载 2019-12-10 13:11:58 · 257 阅读 · 0 评论 -
Spring 中策略模式的 2 个经典应用,可以用来怼面试官了
一、背景程序员在项目实战中,策略模式用的非常多。二、学习目标 会在Spring项目中运用策略模式 三、代码例子废话不多说,Java的软件开发们注意啦,开车啦!下面是一个查询业务使用策略模式的案例查询业务A的具体实现:查询业务B的具体实现:查询业务C的具体实现:四、这是子查询业务的调用类分3部分 1.注入list的子查询业务对象 ...转载 2019-11-29 20:19:19 · 215 阅读 · 0 评论 -
Java中的享元设计模式,涨姿势了!
首先来看一段代码:publicclassShareTest{publicstaticvoidmain(String[] args){Integer a =127;Integer b =127;System.out.println(a==b);Integer c =128;Integer d =128;Sy...转载 2019-11-29 10:24:58 · 176 阅读 · 0 评论 -
Spring 中策略模式的 2 个经典应用,可以用来怼面试官了
一、背景程序员在项目实战中,策略模式用的非常多。二、学习目标 会在Spring项目中运用策略模式 三、代码例子废话不多说,Java的软件开发们注意啦,开车啦!下面是一个查询业务使用策略模式的案例查询业务A的具体实现:查询业务B的具体实现:查询业务C的具体实现:四、这是子查询业务的调用类分3部分 1.注入list的子查询业务对象 ...转载 2019-05-09 21:45:17 · 1995 阅读 · 0 评论 -
面试官:不使用synchronized和lock,如何实现一个线程安全的单例?
单例,大家肯定都不陌生,这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的,一般情况下,我们都会使用synchronized来保证线程安全。那么,如果有这样一道面试题:不使用synchronized和lock,如何实现一个线程安全的单例? 你该如何回答?C类应聘者:可以使用饿汉模式实现单例。如:publicclassSingleton{...转载 2019-04-27 09:45:52 · 1026 阅读 · 1 评论 -
Mybatis 使用的 9 种设计模式,真是太有用了~
来源:crazyant.net/2022.html虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilde...转载 2019-04-15 21:52:33 · 698 阅读 · 0 评论 -
反模式:神仙大类和黄金大锤
数学中有正数和负数物理学有『物质』和『反物质』的存在武侠小说中有九阳神功也有九阴真经生活中有婚姻也有出轨......事物总是充满这种相互矛盾而统一的有趣现象。对于GoF提出的23种设计模式,是否也有反模式呢?答案是显而易见的。一个设计模式在特定的场合下是积极并且显现优势的,但是在偏离最佳适合场景下,它本身就会转变为了一个反模式,从而导致不良的影响,就像现实世界中没有所谓...转载 2019-03-28 09:21:51 · 633 阅读 · 1 评论 -
为什么Python不用设计模式?
来自:码农翻身(微信号:coderising)在遥远的Python王国,有一位少年,非常热爱编程,他的父母想给他报一个班,问了万能的朋友圈以后,发现大家都推荐同一个老师,人称吉先生。于是他的父母毫不犹豫就交了一笔不菲的学费,每周六日下午让孩子去学习。少年学习非常刻苦,很快就学会了Python语法、工具和框架。老师像是见到了可以雕刻的美玉, 倾囊相授,告诉他不仅要把代码写对...转载 2019-03-12 09:41:25 · 4962 阅读 · 3 评论 -
利用策略模式优化过多 if else 代码
本文转载自微信公众号:corssoverJie前言不出意外,这应该是年前最后一次分享,本次来一点实际开发中会用到的小技巧。比如平时大家是否都会写类似这样的代码:if(a){ //do something}else if(b){ //do something}else if(c){ //do something}else{ //do something...转载 2019-03-12 09:33:40 · 1273 阅读 · 0 评论 -
常用的设计模式汇总,超详细!
来源:cnblogs.com/ILoke-Yang/p/8054466.html单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。单例模式实现起来也很容易...转载 2019-03-01 09:41:32 · 599 阅读 · 2 评论 -
Spring框架中的设计模式(一)
设计模式有助于遵循良好的编程实践。作为最流行的Web框架之一的Spring框架也使用其中的一些。本文将介绍Spring Framework中使用的设计模式。这是5篇专题文章的第一部分。这次我们将发现Spring框架中使用的4种设计模式:解释器,构造器,工厂方法和抽象工厂。每部分将首先解释给定模式的原理。紧接着,将会使用Spring的一个例子来加深理解。解释器模式在现实世界中,我们人...转载 2017-11-27 10:06:18 · 802 阅读 · 0 评论 -
Spring框架中的设计模式(二)
代理模式面向对象编程(OOP)可能是编程中最流行的概念。然而,Spring引入了另一种编码规范,面向切面编程(AOP)。为了简化定义,AOP是面向系统特定点的一种编程,如:异常抛出,特定类别方法的执行等.AOP允许在执行这些特定点之前或之后执行补充动作。如何实现这种操作?它可以通过监听器(listeners)进行。但在这种情况下,我们应该在只要可能存在调用的地方都需要定义监听器来进行监听(比如...转载 2017-11-27 10:19:13 · 298 阅读 · 0 评论 -
Spring框架中的设计模式(三)
原型模式这篇文章的第一个设计模式是原型。可以通过官方文档查找有关Spring作用域中的bean作用域的文章中介绍了类似的概念(prototype)。原型设计模式与有用相同名称的(prototype)作用域有点相似。此设计模式允许通过复制已存在的对象来创建一个对象的实例。副本应该是真正的副本。这意味着新对象的所有属性应与复制对象的属性相同。如果不清楚,比一个简单的JUnit案例更好的说明:...转载 2017-11-27 10:54:12 · 255 阅读 · 0 评论 -
Spring框架中的设计模式(四)
适配器当我们需要在给定场景下(也就是给定接口)想要不改变自身行为而又想做到一些事情的情况下(就是我给电也就是接口了,你来做事也就是各种电器),使用适配器设计模式(这里再说一点,就相当于我们再一个规章制度的环境下,如何去适应并达到我们期待的效果,放在架构设计这里,可以拿一个php系统和一个Java系统来说,假如两者要互相调用对方的功能,我们可以设计一套对外的api来适配)。这意味着在调用此对象之...转载 2017-11-27 11:04:41 · 534 阅读 · 0 评论 -
Spring框架中的设计模式(五)
命令模式这篇文章描述的第一个行为设计模式是命令。它允许将请求封装在一个对象内并附加一个回调动作(每次遇到所所谓的回调大家就只需要理解为一个函数方法就好,省的去浪费那么多脑子)。请求被封装在命令对象之下,而请求的结果被发送到接收者。命令本身不是由调用者执行。为了直白了解其中的主要思想,想象一下管理服务器的情况(远程通过ssh操作Linux服务器)。管理员(invoker)在命令行(command...转载 2017-11-27 14:27:53 · 567 阅读 · 0 评论 -
彻底理解Java动态代理
代理设计模式定义:为其他对象提供一种代理以控制对这个对象的访问。动态代理使用java动态代理机制以巧妙的方式实现了代理模式的设计理念。代理模式示例代码public interface Subject { public void doSomething(); } public class RealSubject implements Subject ...转载 2017-11-02 14:48:58 · 363 阅读 · 0 评论 -
Spring 框架用到的 9 个设计模式汇总!
1. 简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 2. 工厂方法...转载 2018-11-04 00:35:05 · 11306 阅读 · 2 评论 -
设计模式之单例模式实践
概念单例模式即一个JVM内存中只存在一个类的对象实例 分类1、懒汉式类加载的时候就创建实例2、饿汉式使用的时候才创建实例 当然还有其他的生成单例的方式,双重校验锁,枚举和静态内部类,文中会有介绍 实践懒汉式1)线程不安全,不可用public class Singleton { private static Sin...转载 2018-11-13 10:48:26 · 194 阅读 · 0 评论 -
设计模式之动态代理模式实战
昨天分享了静态代理的概念及存在的缺点,所以今天讲的动态代理模式十分重要。动态代理在我们工作当中应用相当广泛,如Srping AOP就是动态代理的在开源框架的比较出名的应用。动态代理有两种试,一是通过JDK自带的API实现动态代理,二是通过别的字节码框架实现,如cglib。需要注意的是JDK只能针对接口实现动态代理,不能代理普通类,使用具有局限性。而cglib可以代理接口及所有的普通类。...转载 2018-11-13 11:18:06 · 233 阅读 · 1 评论 -
对Java Inputstream的一次采访
在学习java.io.*包的时候,InputStream那一群类很让人反感,子类繁多就不用说,使用起来非常奇怪。我们想以缓存的方式从文件中读取字节流。总要先创建一个FileInputStream,然后把它放入BufferedInputStream构造函数中去创建BufferedInputStream。完成这些工作后才能开始读取文件。为什么我们不能直接以缓存方式(BufferedInputS...转载 2017-05-26 08:40:27 · 1637 阅读 · 2 评论 -
千万别用设计模式?
面向对象的设计模式(以下简称DP)是22年前GoF四位大师共同著述的,今天依然在设计中发挥重要的指导作用。但是如果没有一定的实际开发经验与代码编写量,或者为了设计模式而设计模式,那么建议还是暂时不要管它。建议从最简单的KISS原则开始,或者从一定的代码量后,追求可读性追求更高目标,可以先做一系列重命名提取方法等基础重构。之后如果仍然觉得代码依然缺乏优雅的特性,再考虑重构到设计模式。总而...转载 2018-12-27 09:56:09 · 1332 阅读 · 0 评论 -
你们要的动图来了:2张动图快速理解高内聚与低耦合
模块模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决.耦合主要描述模块之间的关系, 内聚主要描述模块内部. 模块的粒度可大可小, 可以是函数, 类, 功能块等等.耦合模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差.比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互...转载 2018-12-18 22:29:09 · 570 阅读 · 0 评论 -
Java 实现单例模式的 9 种方法
一. 什么是单例模式因进程需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。二. 单例模式的特点 单例模式只能有一个实例。 单例类必须创建自己的唯一实例。 单例类必须向其他对象提供这一实例。 三. 单例模式VS静态类在知道了什么是单例模式后,我想你一定会想到静态类,“既然只使用一个对象,为何不干脆使用静态类?”...转载 2019-01-09 09:55:34 · 641 阅读 · 0 评论