随笔分类 -  Design Pattern

摘要:传统的代理模式是静态代理,也就是在方法区域中写入方法。 而动态代理的作用是,不修改实现类的代码,能够在代码的前后或者抛出异常的前后执行某个方法。 动态代理类的实现 运行结果: 注意:Proxy.newInsatance()的三个参数,第一个是实现类或者Interface的类加载器,第二个是实现类的I 阅读全文
posted @ 2019-05-16 19:38 SteveYu 阅读(285) 评论(0) 推荐(0)
摘要:举例: jdk自带动态代理 javaassit字节码操作库实现 CGLIB ASM底层操作 实际例子: 使用jdk自带动态代理 java.lang.reflect.Proxy 作用 动态生成代理类和对象 java.lang.reflectInvocationHander 可以通过invoke方法实现 阅读全文
posted @ 2018-12-18 15:45 SteveYu 阅读(290) 评论(0) 推荐(0)
摘要:核心作用: 通过代理,控制对对象的访问 可以详细控制某个对象的方法,在调用这个方法做前置处理,调用这个方法后做后置处理(AOP的微观实现) AOP(Aspect Oriented Programming) 面向切面编程的核心实现机制 核心角色: 抽象角色:定义代理角色和真实角色的公共对外方法 真实角 阅读全文
posted @ 2018-12-18 15:01 SteveYu 阅读(258) 评论(0) 推荐(1)
摘要:适用场景:旧系统的改造升级 实际场景:java.io.InputStreamReader(InputStream)等 1.一个被适配的类 2.客户端 3.适配器写法1 适配器写法2 UML图 阅读全文
posted @ 2018-12-18 00:35 SteveYu 阅读(108) 评论(0) 推荐(0)
摘要:通过new产生一个对象非常繁琐,可以使用原型模式 原型模式实现: ——Cloneable接口和clone方法 ——Prototype模式实现起来最困难的地方是实现内存的复制和操作,Java中提供了clone方法省了大部分事情 案例:多利羊的克隆 1.继承Cloneable接口 2.重写clone方法 阅读全文
posted @ 2018-12-05 02:14 SteveYu 阅读(216) 评论(0) 推荐(0)
摘要:在我们日常生活中,如构建一个飞船,一个手机,一栋建筑,都会有非常复杂的组装,这时候应该用到建造者模式 以建造一个飞船为例 案例:造小页飞船 1.飞船各部分元件 2.飞船实体用来组装 3.创造方法的接口 4.实现组件(小页飞船组件) 5.实体实现装配 6.客户端的串接(测试) UML结构图 阅读全文
posted @ 2018-12-05 01:50 SteveYu 阅读(231) 评论(0) 推荐(0)
摘要:核心: 实例化对象,实现创建者和调用者的分离 简单工厂模式 工厂方法模式 抽象工厂模式 面对对象设计的基本原则: ocp(open closed principle) 开闭原则:一个软件的实体应当对拓展开放,对修改关闭 dip(dependence inversion principle) 依赖反转 阅读全文
posted @ 2018-11-20 03:32 SteveYu 阅读(244) 评论(0) 推荐(0)
摘要:1.饿汉式 步骤: 1.new出静态对象 2.构造方法私有化 3.写一个方法返回静态对象 说明: 1.由于加载类时天然的是线程安全 2.方法没有同步,调用效率高 3.立即加载,没有延时加载的优势 2.懒汉式(延时加载) 优势: 1.修改点同步,在线程高并发时,能够保证安全性 2.延时new出类,能够 阅读全文
posted @ 2018-11-18 12:03 SteveYu 阅读(230) 评论(0) 推荐(0)
摘要:1.分析项目中变化部分与不变部分 2.多用组合,少用继承;用行为类组合,而不是行为的继承 案例: 第一步,把行为抽象为接口 第二步,把具体行为用实体类实现 第三步,做出具体的环境进行实现该实体 测试: 控制台截图 策略模式(strategy)利用接口进行抽象,利用实体进行实现抽象,再做出环境进行实现 阅读全文
posted @ 2018-11-09 19:41 SteveYu 阅读(219) 评论(0) 推荐(0)
摘要:设计模式篇章,源于网课的学习,以及个人的整理 在我们接收用户提交的字符时,常常会使用到过滤,在学习责任链模式前,我们是这样做的 1.定义一个类 测试 往往添加数据会很不方便,于是,借用责任链的方式,我们可以这样写 1.定义一个接口,内部有抽象方法doFilter 2.定义一些不同的过滤器类实现过滤器 阅读全文
posted @ 2018-11-06 11:59 SteveYu 阅读(335) 评论(0) 推荐(0)