设计模式
文章平均质量分 76
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
-
Golang实现组合模式和装饰模式
本文介绍组合模式和装饰模式,golang实现两种模式有共同之处,但在具体应用场景有差异。通过对比两个模式,可以加深理解。原创 2022-11-25 21:20:51 · 575 阅读 · 0 评论 -
快速掌握Zookeeper及Java API
在开发分布式应用程序时,Apache ZooKeeper作为分布式协调服务起着至关重要的作用。特别是对于存储共享配置、选择主节点等应用场景。ZooKeeper还提供了优雅的javaAPI,用于客户端应用程序代码与ZooKeeper znode间无缝通信。原创 2022-09-16 15:25:51 · 1132 阅读 · 2 评论 -
Spring Integration 快速入门教程
本文简单演示了基于Java 配置Spring Integration示例,集成应用可以作为单独的应用运行,也可以作为企业级应用的一个部分。虽然它不直接与其他以EAI为中心的产品和模式(如企业服务总线)竞争,但它是一种可行的、轻量级的替代方案,可以解决许多需要构建ESB才能解决的问题。原创 2022-09-06 15:52:46 · 7531 阅读 · 1 评论 -
漫谈软件分层架构
本文谈谈软件开发中的分层架构。主要包括概述、组件以及主要特性,当然也包括其优缺点及应用场景。架构定义软件架构的定义有很多,这里我们理解为软件系统的基本结构,组成系统的各个功能及行为。尽管术语架构通常指的是建筑设计,但在软件系统中,它包括组件的设计、组件之间的关系、用户交互,以及系统的用户需求。常见的软件架构有:微内核架构、微服务以及客户端-服务器端架构。这几个架构的结构不同、且应用常见也不一样,本文我们仅关注分层架构。什么是分层架构分层架构是软件开发中应用最广泛的架构框架。N层架构表示几个独立.原创 2022-02-25 16:06:09 · 3307 阅读 · 0 评论 -
Java 观察者模式
本文我们介绍观察者模式,通过Java语言提供多种方法实现。什么是观察者模式观察者模式属于行为设计模式,用于对象之间交互:可观察对象和观察者。可观察对象当其状态发生变化时通知观察者。举例,新闻机构收到新闻时通知频道,接收新闻表示新闻机构的状态发生了变化,触发频道接收通知。下面看如何实现。首先定义新闻机构:public class NewsAgency { private String news; private List<Channel> channels = new .原创 2021-06-23 21:54:07 · 347 阅读 · 0 评论 -
Java责任链模式
Java责任链模式本文介绍广泛使用的行为模式————责任链模式。1. 概述责任链模式有一个源头命令对象和一系列处理对象组成。链中每个处理对象负责处理特定类型命令,处理完成后交给下一个处理对象。责任链模式一般用于:解耦命令发送者和接受者处理时选择处理策略下面通过示例进行说明。2. 示例示例使用责任链处理认证请求。输入认证提供者在该场景下是命令,每个认证处理器是独立处理对象。首先定义处理器抽象类:public abstract class AuthenticationProcessor原创 2020-06-06 15:22:55 · 1057 阅读 · 0 评论 -
介绍Java访问者模式
介绍Java访问者模式本文我们介绍一个行为设计模式————Java访问者模式。用于在不更改任何现有代码的情况下向现有的层次结构类添加新的行为。1. 概述使用现实世界类比有助于我们理解设计模式。购物车是比较好理解的例子,购物车中有一组商品,当需要结账时收银员角色为访问者,依次获取不同的商品信息,如价格、重量等,为了计算总价。java内置包中有不少示例:javax.lang.model.e...原创 2019-10-20 15:23:02 · 636 阅读 · 0 评论 -
介绍 Java 适配器模式
介绍 Java 适配器模式本文我们探讨下Java实现适配器模式。适配器模式两个不兼容接口的连接器,因为两者不能直接连接。适配器使用新的接口包装已经存在的类,这样使其与客户端接口兼容。使用该模式的目的是转换已经存在接口至另一个客户端期望的接口。通常在应用程序被设计好之后实现。示例说明假设一个场景,一个应用在美国开发,其返回豪华汽车最高速度每小时多少英里。现在英国需要使用同样的应用,但其速度...原创 2019-05-01 16:36:24 · 188 阅读 · 0 评论 -
介绍Java装饰模式
介绍Java装饰模式装饰模式用于给对象动态或静态地附加额外的责任。装饰器给原对象提供了额外功能接口。实现该模式,我们更倾向于使用组合而不是继承,因为可以减少每个装饰元素子类化的开销。递归调用该模式可以根据需要对原对象进行多次装饰。示例说明假设我们有一个圣诞树对象需要装饰,装饰不能改变原对象,仅给对象增加额外功能。我们打算增加一些如花环(garland)、金属丝(tinsel)、树顶(tre...原创 2019-05-01 11:24:15 · 485 阅读 · 0 评论 -
介绍Java 状态设计模式
介绍Java 状态设计模式本文我们介绍GoF中一个行为设计模式————状态模式。首先总体介绍其目的,解释其能解决什么问题。然后看下状态模式的UML图并通过实际示例进行实现。概要说明状态设计模式的主要目的是在不改变类的情况下改变对象的行为。同时,实现该模式代码需保持简洁,不能有很多if/else语句。加入我们有一个包裹需要邮寄。包裹本身可以被订购,然后送到邮局,最后由客户接收。现在需要根据实...原创 2019-05-13 20:43:41 · 919 阅读 · 0 评论 -
介绍Java结构型设计模式
介绍Java结构型设计模式本文我们聚焦java中实现结构设计模式,讨论它们是什么以及它们之间的基本差异。设计模式分类根据GOF对设计模式的分类,有三种:创建型模式结果型模式行为型模式简言之,结构模式处理类和对象的组合。它们提供不同方式使用对象组合和继承创建一些抽象。属于结构型模式有代理模式,装饰模式,适配器模式,桥接模式,门面模式,享元模式,组合模式。代理模式通过该模式,我们...原创 2019-05-05 21:00:35 · 264 阅读 · 0 评论 -
介绍Java 门面模式
介绍Java 门面模式本文我们探讨一种结构模式————门面模式(Facade)。首先我们概要介绍,阐述其优点及能够解决什么问题。然后应用该模式至java中实际存在的问题。什么是门面模式简言之,门面把复杂系统封装成简单接口,隐藏起复杂性,使其他子系统更简单地使用。同时如果需要直接使用复杂子系统,仍然可以。其不强制任何时间都使用。使用该模式除了更简化的接口,也让客户端实现和复杂子系统进行解耦。...原创 2019-05-04 16:22:46 · 781 阅读 · 0 评论 -
介绍Java享元模式(Flyweight)
介绍Java享元模式(Flyweight)本文我们探讨一种结构模式————享元模式。一般用于减少内存占用,对于对象实例化比较昂贵的应用可以提升应用的性能。简言之,享元模式基于工厂重用已创建的对象。每次调用对象时,工厂检查对象是否已经创建。如果是,则返回已存在对象,否则创建新的对象,存储并返回。共享对象的状态由一个不变组件(内部的)和一个可以由客户端代码操作的变量组件(外部的)组成。共享对象时...原创 2019-05-04 16:21:26 · 372 阅读 · 0 评论 -
介绍Java组合模式
介绍Java组合模式本文我们探讨一种结构设计模式————组合模式。学习其结构及实现目的。组合模式结构组合模式用于以相同的方式处理单个对象和对象的组合(或复合)。可以视为树形结构,都继承一个基类,能表示单个部分或整个对象层次。可以分解为几个部分:组件:在组合中所有对象的基础接口。其可以是接口或抽象类,包括管理子组合的通用方法。叶子节点:实现基础组件的缺省行为,不包括对其他对象的引用。组...原创 2019-05-02 16:58:33 · 299 阅读 · 0 评论 -
详解Java中介模式
详解Java中介模式本文我们探讨GoF设计模式中的中介模式,详细说明其目的以及什么场景下使用。当然我会结合示例进行实战说明。中介模式面向对象编程中,我们始终应该让设计的系统组件保持松耦合并可重用。这会让我们代码更容易维护和测试。实际应用中,我们经常需要处理复杂的对象之间依赖,这时中介模式就派上用场了。中介模式的目的就是为了减少复杂性和依赖性,避免精密耦合对象之间直接通信。通过创建中介对象...原创 2019-04-25 22:11:06 · 327 阅读 · 0 评论 -
java实现命令模式
java实现命令模式命令模式属于行为设计模式,是Gof设计模式正式列表之一。简言之,命令模式在一个对象中封装执行给定动作的所有数据,包括要执行方法,方法参数以及方法所属对象。通过该模式可以把消费者和命令对象生产者进行解耦,因此也称为生产者-消费者模式。本文我们学习在java如何实现命令模式,分别通过面向对象和面向函数两种方法,并了解哪些用例可能有用。面向对象实现经典实现中,命令模式需要实现...原创 2019-03-09 22:28:32 · 1617 阅读 · 0 评论 -
Java中如何消除过多条件判断
Java中如何消除过多条件判断条件判断结构是任何语言中的关键内容。但是如果编写了大量嵌套if语句,会使得代码更加复杂和难以维护。本文提供多种方式代替嵌套if语言,使代码更简洁。案例说明通常我们遇到涉及很多条件的业务逻辑,每个条件需要处理不同逻辑。为了演示方便,我们使用Calculator类,其中计算方法带两个操作数和一个操作符作为输入参数并返回操作结果:public int calcula...原创 2019-03-09 07:46:51 · 11201 阅读 · 1 评论