代码改变世界

深入理解Java虚拟机2-chap3-斗之气9段

2019-03-02 17:21 by 剑动情缥缈, 246 阅读, 0 推荐, 收藏, 编辑
摘要:一、GC需要完成三件事 二、寻找已死对象:第一件事 判断对象是否存活算法 1.引用计数算法 原理:给对象添加一个引用计数器,每当有一个地方引用本对象,计数器值加1,无法解决对象之间循环引用问题 代码:对象A中引用指向B,B反之,当引用置为null后,堆中的对象仍然在互相引用着 package com 阅读全文

外观模式

2019-03-01 17:06 by 剑动情缥缈, 188 阅读, 0 推荐, 收藏, 编辑
摘要:1.基本概念 定义一个高层同一的接口,Client通过这个统一的接口对子系统中的一群接口进行访问 引入外观角色后,对象只需要与外观角色交互,不直接与子系统打交互,实现了客户端与子系统解耦 使得子系统的使用更简单 2.代码 package com.chengjie; class SystemLight 阅读全文

建造者模式

2019-03-01 14:46 by 剑动情缥缈, 179 阅读, 0 推荐, 收藏, 编辑
摘要:1.基本概念 将对象的构建过程独立出来,使得同样的创建过程可以产生不同的对象 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象 用户只负责给出负责对象,建造者模式负责按顺序创建对象的各个组件 UML 2.代码 Client只负责跟Director交流需求,Director将指挥具体创 阅读全文

模板方法模式

2019-02-28 15:36 by 剑动情缥缈, 145 阅读, 0 推荐, 收藏, 编辑
摘要:1.定义 定义一个模板,将具体实现延迟到子类中实现 UML 2.代码 package com.chengjie; abstract class CookVegetable { final void cook() { this.pourOil(); this.pourVegetable(); this 阅读全文

代理模式

2019-02-27 19:50 by 剑动情缥缈, 168 阅读, 0 推荐, 收藏, 编辑
摘要:1.基本概念 给对象提供一个代理对象,通过代理对象调用实际对象 作用:通过代理对象间接访问实际对象 解决的问题:防止直接访问对象给系统带来不必要的复杂性(直接将实际对象接口完全暴露给客户端程序员) UML 2.代码 package com.chengjie; interface BuySubject 阅读全文

JAVA编程思想学习笔记7-chap19-21-斗之气7段

2019-02-27 19:49 by 剑动情缥缈, 165 阅读, 0 推荐, 收藏, 编辑
摘要:1.枚举 2.内置三种注解 @Override @Deprecated @SuppressWarnings 3.元注解:用于注解其它注解 4.注解处理器:通过反射 5.创建线程的两种方式 实现Runnable接口:推荐 继承Thread类 package com.chengjie; class Th 阅读全文

策略模式

2019-02-27 16:29 by 剑动情缥缈, 179 阅读, 0 推荐, 收藏, 编辑
摘要:1.基本概念 定义一系列算法,将算法接口封装到具有算法接口的策略类中,从而使得可以改变算法 作用:将算法责任与策略类解耦,算法可以独立于策略类变化 策略类仅封装算法,使用何种算法由客户端决定 UML 2.代码 package com.chengjie; interface Strategy { vo 阅读全文

抽象工厂模式

2019-02-27 15:14 by 剑动情缥缈, 160 阅读, 0 推荐, 收藏, 编辑
摘要:1.基本概念 定义:即Abstract Factory Pattern,提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类;具体的工厂负责实现具体的产品实例。 与工厂方法模式的区别:抽象工厂中每个工厂可以创建多种类的产品(通过多个方法);而工厂方法每个工厂只能创建一类。 解决的问题: 阅读全文

工厂方法模式

2019-02-26 11:35 by 剑动情缥缈, 238 阅读, 0 推荐, 收藏, 编辑
摘要:1.基本概念 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,将类的实例化延迟到子类工厂 解决的问题:简单工厂违背的开放-封闭原则等 UML图 模式组成 2.代码实现 package com.chengjie; int 阅读全文

JAVA编程思想学习笔记6-chap16-18-斗之气6段

2019-02-26 08:49 by 剑动情缥缈, 224 阅读, 0 推荐, 收藏, 编辑
摘要:1.java.util.Arrays package com.chengjie; import java.util.Arrays; import java.util.List; public class TestArrays { public static void main(String[] ar 阅读全文