
设计模式
Java架构学习
W厚积薄发
这个作者很懒,什么都没留下…
展开
-
命令模式
命令模式 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。在命令模式中有以下几种模式:抽象命令类、具体命令角色、实现者/接收者、调用者/请求者1. 抽象命令类 声明执行命令的接口,拥有执行命令的抽象方法 execute()。package com.wx.demo0...原创 2020-01-07 17:03:09 · 230 阅读 · 0 评论 -
策略模式
策略模式 例如,在该模式中定义一系列算法,对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 在策略模式中分为一下几个部分:抽象策略类、具体策略类、环境类1. 抽象策略类 定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现package com.wx.dem...原创 2020-01-07 15:47:41 · 227 阅读 · 0 评论 -
模板方法模式
模板方法模式 父类定义一些模板方法,一些方法需要在子类中实现。使得子类在不改变父类模板的情况下,重新定义某些方法的步骤。1. 抽象类 定义一些模板方法,有的方法在本类中实现,有的方法需要在子类中实现。package com.wx.demo01;//抽象类public abstract class AbstractClass { //模板方法 pub...原创 2020-01-07 14:47:51 · 169 阅读 · 0 评论 -
外观模式
外观模式 在电脑开机中,当我们点击开机按钮后,电脑开机。其实在电脑开机的过程中,需要启动CPU,memory,disk。但是这些都被隐藏,我们只需要按动开机键就好。这里就采用了外观模式,将复杂操作丰庄,降低复杂度。在外观模式中分为以下几个部分,外观角色,子系统角色,客户角色。1. 外观角色 将复杂操作封装,调用子系统方法package com.wx.demo01;p...原创 2020-01-07 10:53:18 · 421 阅读 · 0 评论 -
装饰者模式
装饰者模式 对原有功能进行增强。装饰模式含有一下几部分。抽象构件、具体构件、抽象装饰、具体装饰。原本功能是具体构件中的功能,现在要通过装饰来对具体构建进行增强。1. 抽象构件 定义一个接口,来确定他的子类要实现怎样的功能。package com.wx.demo01;//抽象构建角色public interface Component { public ...原创 2020-01-07 09:35:21 · 180 阅读 · 0 评论 -
适配者模式
适配者模式 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。1. 创建目标接口package com.wx.demo01;//目标接口public interface Target { public void request();}2. 创建适配者类package com.wx.dem...原创 2020-01-06 15:14:37 · 266 阅读 · 0 评论 -
工厂模式
工厂模式:模拟现实生活只要知道现实中得工厂以及工厂得产品,无须知道怎样生产产品,直接可以获取。在系统增加新的产品时,无需对原工厂和产品进行修改工厂模式中有这几部分:抽象工厂,具体工厂,抽象产品,具体产品1.建立抽象工厂package com.wx;//抽象工厂:提供了场品的生成方法public interface AbstractFactory { public...原创 2020-01-03 17:11:08 · 172 阅读 · 0 评论 -
动态代理
之前一直在接触动态代理,但是对于一些概念还是不能很好得理解,知道模板怎么用,但是换一种方式,我就懵逼了。为什么会有动态代理呢,先看下面得例子:由来1.首先定义一个接口Subjectpackage com.wx.proxy.jdkproxy;public interface Subject { void hello(String param); void say...原创 2020-01-03 10:09:35 · 188 阅读 · 0 评论 -
工厂模式
目标: 在使用过程中只要知道工厂名就可以通过工厂获得想要得对象,满足开闭原则实际案例: 在此案例中,AbstractFactory是抽象工厂类。ConcreteFactory1和ConcreteFactory2是两个实现类工厂,实现AbstractFactory。这两个工厂负责创建对应得Product实现类。Product也是抽象工厂类,Concrete...原创 2020-01-02 10:50:42 · 260 阅读 · 1 评论 -
浅克隆和深克隆
为什么要使用克隆 在业务中,有时候需要对对象进行克隆。例如Student对象,如果如下代码进行“克隆”,其实是引用重新赋值 Student stu1 = new Student(); stu1.setName("测试1"); stu1.setAge(23); Student stu2 = stu1; 在上述代码中如...原创 2019-12-31 09:55:41 · 267 阅读 · 0 评论