
java设计模式
文章平均质量分 77
远处的海亲吻着天
从事JAVA软件开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java 设计模式 中介者模式 让互相调用的模块之间解耦合
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式的角色和职责 1、Mediator:中介者类的抽象父类 抽象中介者角色定义统一的接口,用于各角色(男和女)之间的通信。 2、ConcreteMediator:具体中介者角色 具体中介者角色,通过协调各角色(男和女)实现协作行为,因此它必须依赖于各个角色。 3、Colleague:关联类的抽象父类 每一个角色都知道中介...原创 2020-10-11 18:53:26 · 648 阅读 · 0 评论 -
java 设计模式 原型模式 自己实现自己的拷贝逻辑
原型模式,在笔者理解看来就是克隆,当我们在创建第一个对象时,已经给对象赋值完毕,此时我们需要一个当前对象的副本,如果没有原型模式,我们会再次创建一个对象,然后后二次赋值,保证两个对象完全一致,这样我们的代码可读性就比较差,而且稍不留神copy错了麻烦就大了了,此时我们如果了解原型模式,就能够美化我们的代码,看起来够整洁,而且也不会出错。原型模式 说明 浅克隆 只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝, 还是指向原生对象的内部元素地址 深度克隆 深复制把原创 2020-10-11 18:05:43 · 210 阅读 · 0 评论 -
java 设计模式 构造器模式 封装复杂对象的构造逻辑
构造器模式,也被称为建造者、生成器模式,是设计模式中比较容易理解的模式之一。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。package com.designpattern;public class BuilderPatternDemo { public static void main(String[] args) { User user = new User(); System.out.println("在设置原创 2020-10-11 17:39:54 · 464 阅读 · 0 评论 -
java 设计模式 外观模式 将多个内部模块调用封装在一个类中
概念介绍外观模式是隐藏了系统的复杂性,能够为子系统中的一组接口提供一个统一的接口。客户在使用系统时不必和子系统打交道了,降低了客户和子系统间的耦合。在外观模式中主要包含如下几个角色。1、门面角色(facade):这是外观模式的核心。它被客户角色调用,因此它熟悉子系统的功能。它内部根据客户角色已有的需求预定了几种功能组合。2、子系统角色(SystemA、SystemB、SystemC):实现了子系统的功能。对子系统角色来说,facade角色与客户角色一样,是未知的,它没有任何facade角色的原创 2020-10-11 11:08:26 · 520 阅读 · 0 评论 -
java 设计模式 桥接模式 两个代码组件之间面向接口桥接调用
简介桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式。个人解释:将变化的维度进行抽离,在他们之间搭建一座桥梁来通信,两个代码组件之间面向接口桥接调用,那么接口就是他们之间的桥梁 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。 实现化(Implementor)角色:这个角色给出...原创 2020-10-10 23:49:02 · 302 阅读 · 0 评论 -
java 设计模式 享元模式
享元模式享元(Flyweight)的核心思想很简单:如果一个对象实例一经创建就不可变,那么反复创建相同的实例就没有必要,直接向调用方返回一个共享的实例就行,这样即节省内存,又可以减少创建对象的过程,提高运行速度。package com.designpattern;import java.util.HashMap;import java.util.Map;/** * 享元模式 */public class FlyweightPatternDemo { public stat原创 2020-10-10 16:14:10 · 125 阅读 · 0 评论 -
Spring bean生命周期
bean生命周期: bean创建-----初始化-----销毁的过程先区别一下Spring Bean的实例化和初始化两个阶段的主要作用:1、实例化—-实例化的过程是一个创建Bean的过程,即调用Bean的构造函数,单例的Bean放入单例池中2、初始化—-初始化的过程是一个赋值的过程,即调用Bean的setter,设置Bean的属性 容器管理Bean的生命周期: ...原创 2019-02-24 20:27:22 · 172 阅读 · 0 评论 -
java 设计模式 工厂模式
1.工厂方法意图定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类适用性当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候工厂方法模式的构成产品角色(Product):定义产品的接口具体...原创 2018-05-02 23:44:09 · 268 阅读 · 0 评论 -
在java中写出完美的单例模式
1. 前言 单例(Singleton)应该是开发者们最熟悉的设计模式了,并且好像也是最容易实现的——基本上每个开发者都能够随手写出——但是,真的是这样吗? 作为一个Java开发者,也许你觉得自己对单例模式的了解已经足够多了。我并不想危言耸听说一定还有你不知道的——毕竟我自己的了解也的确有限,但究竟你自己了解的程度到底怎样呢?往下看,我们一起来聊聊看~ 2. 什么是单例? 单例对象的类必须保证只有...转载 2018-02-27 22:51:44 · 370 阅读 · 0 评论 -
java 设计模式 装饰模式 对目标类的功能进行增强
装饰模式 有名包装模式* 1.装饰模式以对客户端的方式扩展对象的功能,是继承关系的一个替代方案* 2..装饰模式已对客户端的方式动态的给一个对象附加上更多的责任* 3.装饰模式可以在不创造更多子类的情况下,将对象的功能加以扩展。* 4.装饰模式把客户端的调用委派到被装饰类。装饰模式关键在于这种扩展是完全透明的* 5.装饰模式是在不必改变原有文件和使用继承的情况下,动态原创 2017-09-19 23:01:03 · 534 阅读 · 0 评论 -
java 行为模式 责任链模式 动态组装不同的复杂业务流程
责任链模式意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止适用性:有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。可处理一个请求的对象集合应被动态指定。责任原创 2017-12-16 13:09:59 · 786 阅读 · 0 评论 -
java 行为型模式 观察者模式 监听目标对象的状态改变
本文继续介绍23种设计模式系列之观察者模式。观察者模式中,一个被观察者管理所有相依于它的观察者物件,并且在本身的状态改变时主动发出通知。这通常通过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。角色抽象被观察者角色:把所有对观察者对象的引用保存在一个集合中,每个被观察者角色都可以有任意数量的观察者。被观察者提供一个接口,可以增加和删除观察者角原创 2017-09-24 21:39:34 · 599 阅读 · 0 评论 -
java 行为型模式 模板模式
模板方法模式定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义改算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。使用场合 1)一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成。2)各子类公共的行为应该被提取出来并集中到一个公共父类中以避免代码的重复。首先识原创 2017-11-13 23:07:13 · 190 阅读 · 0 评论 -
java 行为模式 命令设计模式 给其他模块下达命令
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。命令模式的构成1 客户角色:创建一个具体命令对象,并确定其接收者2 命令角色:声明一个给所有具体命令类的抽象接口。这是一个抽象角色,通常由一个接口或抽象类实现3 具体命令角色:定义一个接收者和行为之间的弱耦合,实现execute方法,负责调用接收者的相应原创 2017-12-10 14:53:56 · 241 阅读 · 0 评论 -
java 行为模式 备忘录模式 将中间数据暂存之后再恢复
意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态适用性必须保存一个对象在某一个时刻的(部分)状态, 这样以后需要时它才能恢复到先前的状态。备忘录模式的构成1 备忘录(Memento)角色:保持原发器(Originator)的内部状态,根据原发器来决定保存哪些内部的状态原创 2017-12-20 22:04:26 · 397 阅读 · 0 评论 -
java 行为模式 迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。 迭代器模式的构成1 抽象迭代器(Iterator)角色:此抽象角色定义出遍历元素所需的接口2 具体迭代器(ConcreteIter原创 2017-12-13 20:32:29 · 249 阅读 · 0 评论 -
java 行为型模式 策略模式 替换屎一样的if else
策略模式(Strategy Pattern)中体现了两个非常基本的面向对象设计的原则封装变化的概念编程中使用接口,而不是对接口实现面向接口的编程策略模式的定义:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化策略模式的意义:策略模式使开发人员能够原创 2017-12-07 09:30:49 · 553 阅读 · 0 评论 -
责任链模式和状态模式对比
责任链模式和状态模式对比(转)概述 常用23中设计模式中,有三种模式容易混淆,这三种模式即责任链模式、状态模式以及策略模式。现在想深入了解下这3种设计模式的区别,在网上找找之后,发现有一篇博客写的相对清晰。先将内容整理转载如下,也算是对知识的记载和传承;状态模式与策略模式比较1、定义: 状态模式:通过改变对象的内部状态而改变对象自身的行为,这转载 2017-12-16 11:17:24 · 1519 阅读 · 0 评论 -
java 行为模式 状态模式 封装数据的状态流转逻辑
转载地址https://www.cnblogs.com/chenssy/p/3280212.html介绍状态模式之前,我们先来看这样一个实例:你公司力排万难终于获得某个酒店的系统开发项目,并且最终落到了你的头上。下图是他们系统的主要工作(够简单)。 当你第一眼看到这个系统的时候你就看出来了这是一个状态图,每个框框都代表了房间的状态,箭头表示房间状态的转换。分析如原创 2017-12-16 14:00:20 · 3604 阅读 · 0 评论 -
Java 代理模式
简介Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术。生活中的方方面面都可以虚拟到代码中。代理模式所讲的就是现实生活中的这么一个概念:中介。代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSubjec转载 2017-11-19 21:58:36 · 267 阅读 · 0 评论