摘要: /** * 模板模式:一个抽象类,提供一个固定的方法,该方法使用final修饰,方法里面的实现调用了其他抽象方法,抽象方法留给子类实现 * 这样,这个final修饰的方法就是模板方法,它提供了做这个事情的方法步骤,只是具体的步骤根据不同子类的不同实现来决定 * * */ public abstrac 阅读全文
posted @ 2019-05-24 15:12 yangxiaohui227 阅读(92) 评论(0) 推荐(0) 编辑
摘要: /** * 享元模式:简单点说就是使用了缓存的方式,用map或list来存已经创建的对象,获取的时候直接从map或者list中获取就行了,获取不到再new出来,然后再存进去; * 用到的地方有各种常量池,Short在jdk中-128到127的值是缓存在一个数组中,这里使用一个Map简单模拟下缓存模式 阅读全文
posted @ 2019-05-24 14:33 yangxiaohui227 阅读(122) 评论(0) 推荐(0) 编辑
摘要: /** * 桥接模式:按资料说是将抽象和实现分离,这个很难理解,此处不深究定义;下面举个例子说明白 * 如果形状有长方形,正方形,圆形,颜色有红色和绿色,那么他们的组合就有3x2=6种 如果我们定义6个类去实现,那显然不合理,例如增加了一个形状,那就有4x2=8种了, * 伪代码实现上面的方式: p 阅读全文
posted @ 2019-05-24 12:13 yangxiaohui227 阅读(137) 评论(0) 推荐(0) 编辑
摘要: //飞机 public class Plane { public void buyTicket(){ System.out.println("订购飞机票"); } } //火车 public class Train { public void buyTicket(){ System.out.prin 阅读全文
posted @ 2019-05-24 10:23 yangxiaohui227 阅读(130) 评论(0) 推荐(0) 编辑
摘要: /** * 动态代理类:先参考代理模式随笔,了解代理模式的概念,分为jdk动态代理和cglib,jdk动态代理是通过实现接口的方式创建代理类的,cglib是通过继承类的方式实现的代理类的 * jdk动态代理需要用到jdk自带的一个类Proxy来生成代理类,还需要一个提供执行方法的执行接口Invoca 阅读全文
posted @ 2019-05-23 18:11 yangxiaohui227 阅读(210) 评论(0) 推荐(0) 编辑
摘要: /** * 代理模式:跟装饰器模式代码和机构一样,只是偏向不一样(装饰器是对被装饰类的功能增强,不会阻止被装饰器的原本功能),代理类强调的完全控制被代理类, * 只有业务意义上的区别,实现模式是一样的: * 一个接口,2个实现类,其中一个是代理类,代理类通过组合方式持有被代理类 * * */ //父 阅读全文
posted @ 2019-05-23 16:25 yangxiaohui227 阅读(111) 评论(0) 推荐(0) 编辑
摘要: /** *组合模式:一个对象的属性是另一个对象,这就是组合模式了,应该是最常用的模式了: * 如学校对象,学校里面有多个班级,这样就可以将班级组合到学校里面了 * * */ public class School { private List<Class> classes; public List< 阅读全文
posted @ 2019-05-23 16:00 yangxiaohui227 阅读(123) 评论(0) 推荐(0) 编辑
摘要: /** * 装饰模式(包装模式),如果想扩展一个类,而不愿意继承该类,此时可以对其进行包装,此处以包装一个华为电脑为例,给其增加16G内存. * 模式:一般被包装类和包装类会实现同一个接口,然后被包装类对象作为包装类的一个属性 * * */ //包装类和被包装类需要实现的接口 public inte 阅读全文
posted @ 2019-05-23 15:45 yangxiaohui227 阅读(114) 评论(0) 推荐(0) 编辑
摘要: /** * 适配器模式:通过一个类(适配器 adapter)来把2个不同的类或者接口的功能组装在一起; * 模式例子:有个Mp4类,里面有个听音乐的方法,还有一个TV类,里面有个看电视的方法,那么如果让MP4类继承TV类是可以实现相应的效果(或者使用组合模式,TV作为MP4的属性),但他们没有业务上 阅读全文
posted @ 2019-05-23 14:37 yangxiaohui227 阅读(113) 评论(0) 推荐(0) 编辑
摘要: /** * 原型模式:其实就是对象的克隆,分为浅克隆和深克隆:浅克隆:对象的属性假如也是一个对象的话,那么拷贝的是属性对象的引用,克隆出来的对象对该属性的修改会影响原来对象的属性; * 深拷贝的话,要同时拷贝属性才行;深拷贝的另外一种方式是序列化和反序列化 * *///浅拷贝实现如下 public 阅读全文
posted @ 2019-05-23 12:04 yangxiaohui227 阅读(135) 评论(0) 推荐(0) 编辑