摘要: Java虚拟机定义了若干种程序运行期间会使用的运行时数据区域,其中一些会随着虚拟机启动而创建,随着虚拟机的退出而销毁。另外一些则是和线程一一对应,这些与线程对应的数据区域随着线程开始而创建,线程的结束而销毁。 PC寄存器 PC寄存器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器, 阅读全文
posted @ 2019-08-12 18:27 fzsyw 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 定义 动态的给一个对象添加一些额外的职责。就功能来说,装饰模式相比生成子类更加灵活 使用场景 1. 装饰类和被装饰类都可以独立发展,不会耦合,它是继承关系的一个替代方案 2. 需要扩展一个类的功能,或者给一个类增加附加功能 3. 动态增加一个类的功能,再动态的撤销 4. 需要为一批兄弟类,进行改装或 阅读全文
posted @ 2019-08-10 11:36 fzsyw 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 定义 定义一组算法,将每个算法封装起来,并且它们之间可以互换 使用场景 1. 多个类只有在算法或者行为上不同的场景 2. 算法需要自由切换 实现方式 一般判断条件的代码,可以使用策略模式优化 策略的接口 策略的实现类 对外的入口 测试类 扩展与思考 1. 使用Spring情况下,可以不用自己创建 , 阅读全文
posted @ 2019-08-09 15:56 fzsyw 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 定义 定义对象间的一对多的关系,使得每当一个对象的状态改变,则所有依赖与它的对象都会得到通知并被自动更新 使用场景 1. 观察者和被观察者是抽象耦合,利于扩展 2. 一个对象的改变将会导致一个或多个对象的改变,不清楚具体有多少对象以及这些被影响的对象是谁的情况 3. 如果有这样一个影响链的情况下也可 阅读全文
posted @ 2019-08-09 11:25 fzsyw 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 定义 将一个复杂对象的创建与它的表示(部件与装配细节)相分离,使得同样的创建过程可以创建不同的表示。 使用场景 1. 可以将装配细节封装起来,调用者不必知道具体的产品的内部结构和产生过程。 2. 多个部件,都装配到一个对象,不同的装配过程或者不同的装配顺序,产生不同的结果,可以使用该模式 实现方式 阅读全文
posted @ 2019-08-08 11:32 fzsyw 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 定义 为其他对象提供一种代理以控制这个对象的访问。 使用场景 1. 职责清晰,真实角色就是实现业务逻辑,不必关系其他非本职的工作。 2. 高扩展性,具体的角色随时变化,只要实现了接口,代理类都可以在不用改变的情况下使用。 实现方式 一个简单的RPC通信,运用了动态代理。详细的代码请参考 "自己实现R 阅读全文
posted @ 2019-08-08 10:31 fzsyw 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 定义 1. 简单工厂:由一个工厂对象决定创建出产品的实例。 2. 工厂方法:定义一个用于创建对象的接口,让使用者决定实例化哪一个类。工厂方法使一个类的实例化延迟到其使用者。 3. 抽象工厂:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体实现类。 使用场景 1. 简单工厂模式将对象的 阅读全文
posted @ 2019-08-01 11:51 fzsyw 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 使用场景 1. 当一个类只有一个实例,并且第三方可以从一个公共的访问点访问它时。 2. 当一个唯一一个的实例可以通过子类化来扩展,而且第三方再不需要改代码的情况下就能使用一个扩展实例 3. 当是一个对象需要频繁地创建、销毁时,而且创建或销 阅读全文
posted @ 2019-07-31 10:57 fzsyw 阅读(76) 评论(0) 推荐(0) 编辑