![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java设计模式
小谭学java
这个作者很懒,什么都没留下…
展开
-
装饰器模式
概念装饰者模式是在不改变源码的情况下,对一个现有对象的功能进行扩展或者覆盖,是一种结构型模式。装饰器模式和代理模式很像,他们的类图几乎一样,只是使用目的不同。优缺点优点:可以动态的扩展或重写一个类的功能;装饰类和被装饰类模块间通过抽象产生依赖,不会相互耦合;通过装饰模式替代继承来实现功能扩展,可以使得原有的功能和现有的功能互不影响。缺点:多层装饰比较复杂。装饰器模式中的角色抽象组件:定...原创 2019-12-06 14:21:36 · 146 阅读 · 0 评论 -
观察者模式
概念观察者模式是一对多的关系,当被观察者的状态发生变化的时候,能够自动通过和他相关的观察者。优缺点优点:观察者和被观察者之间建立一个抽象的耦合,观察者模式支持广播通讯。缺点:观察者之间有过多的细节依赖,提高时间消耗及程序复杂度,如果在观察者和观察目标之间存在循环依赖,观察目标会触发他们之间循环调用,可能会死循环。。观察者模式中的角色抽象被观察者(目标):定义了一系列公用的方法,如添加、...原创 2019-12-06 14:20:01 · 171 阅读 · 0 评论 -
适配器模式
概念适配模式是把一个类的接口变成客户端期待的另外一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够在一起工作。适配器模式中的角色适配者角色:需要被适配的对象或者类型。适配器角色:通过包装一个需要适配的角色,从而将适配的角色的接口转换成目标接口。目标接口角色:客户端所期待的接口,可以是具体类、抽象类、接口。优缺点优点:可以让任何两个没有关联的类一起运行,提高了类的复用,增加了类...原创 2019-12-05 15:15:01 · 116 阅读 · 0 评论 -
模板模式
概念模板模式顾名思义就是通过抽象类来定义一个逻辑模板,将公共的结构化逻辑提取出来,将具体的实现延迟到子类中实现。模板模式的角色抽象模板角色:定义了一系列公共的行为,一般是一个抽象类或接口。具体模板角色:继承抽象模板角色,可以通过重写抽象模板角色中的方法实现自己的逻辑。优缺点优点:封装了不变部分,扩展可变部分,提高代码的复用性。行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个...原创 2019-12-05 15:14:37 · 124 阅读 · 0 评论 -
策略模式
概念策略模式是将一组算法封装到具有共同接口的独立类中,从而使他们可以相互替换。策略模式最大的特点是可以在不影响客户端的情况下,动态的改变策略从而实现不同的功能。**优点:**可以动态的改变对象的行为。通过面向接口编程,使得策略类和客户端独立开来,策略类的变化不会影响到客户端(低耦合),符合开闭原则。**缺点:**客户端必须知道所有的策略类,自行选择需要的策略类。策略模式将产生很多的策略类。...原创 2019-12-04 21:23:32 · 199 阅读 · 0 评论 -
代理模式
概念代理模式主要为其它对象(目标类)提供一种代理以控制这个对象的访问。作用:通过代理模式,我们可以在不修改目标类源码的情况,实现对目标对象功能的扩展。同时实现了客户端和目标类之间的解耦。运用实例:spring aop,调用具体类之前需要日志打印,可以再代理类中添加日志打印的功能。代理模式中的角色**抽象角色:**为目标类和代理类提供一个共同的接口,一般是接口或抽象类。**代理角色:**...原创 2019-12-04 17:19:00 · 111 阅读 · 0 评论 -
原型模式
概念原型模式就是以一个已创建实例为原型,通过复制该原型对象来创建一个和原型相同或者相似的新对象。优点:在需要大量创建相似对象的场景下可以提高性能,因为不需要new对象,消耗的资源少。缺点:通过克隆方式实现复制时,要注意是否有引用对象。在java中通常都是通过克隆或者序列化来实现原型模式。克隆浅克隆首先我们创建User和Work两个类,作为克隆的实例。public class Use...原创 2019-12-04 17:18:43 · 88 阅读 · 0 评论 -
单例模式
什么是单例模式保证一个类只有一个实例,并且提供一个访问该实例的全局入口。饿汉式在类加载的时候就立即初始化并且创建单例对象。public class HungrySingle { // final对象创建后就不可变 private static final HungrySingle single = new HungrySingle(); // 构造器私有,防止外...原创 2019-12-04 17:17:59 · 103 阅读 · 0 评论 -
java三种工厂模式
java三种工厂模式简单工厂模式举个车工厂的例子:首先我们创建一个汽车的接口,因为不管是奔驰、宝马还是奥迪,这些不同牌子的车本质上都是车。给该接口定义一个统一的获取汽车的方法。public interface Car { /** * 获取汽车 * @return */ String getCar();}接下来分别创建宝马类和奔驰类实现该...原创 2019-12-04 17:16:16 · 153 阅读 · 0 评论 -
java 三种工厂模式(简单工厂+工厂方法+抽象工厂)
一、简单工厂模式概述 简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。工厂模式结构图简单工厂模式角色 在简单工厂模式结构图中包含如下几个角色:Factory(工厂角色):工厂角色即工厂类,它是简单...原创 2019-06-04 10:51:15 · 13506 阅读 · 2 评论 -
设计模式概述与面向对象设计原则详解
一、设计模式概述 设计模式的一般定义如下:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过 分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。二、设计模式的作用设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作。设计模式有助于我们提...原创 2019-06-03 16:13:08 · 258 阅读 · 0 评论