Fork me on GitHub
633's Personal Website

游客是你,风景是我,无法避免,让你经过


  • 首页

  • 最热

  • 标签

  • 分类

  • 归档

  • 最爱

  • 读书

  • 电影

  • 关于

  • 搜索

设计模式之生成器模式(Builder_Pattern)

发表于 2017-03-15 | 分类于 设计模式 | 热度:
字数统计: 1,552

生成器模式的核心是当构建生成一个对象的时候,需要包含多个步骤,虽然每个步骤具体的实现不同,但是都遵循一定的流程与规则

阅读全文 »

深度解析Java多线程的内存模型

发表于 2017-03-12 | 分类于 Java | 热度:
字数统计: 3,773
  • 内部java内存模型
  • 硬件层面的内存模型
  • Java内存模型和硬件内存模型的联系
  • 共享对象的可见性
  • 资源竞速

Java内存模型很好的说明了JVM是如何在内存里工作的,JVM可以理解为java执行的一个操作系统,作为一个操作系统就有内存模型,这就是我们常说的JAVA内存模型。

如果我们想正确的写多线程的并行程序。理解好java内存模型在多线程下的工作方式是及其重要的,这可以帮我们更好的理解底层的工作方式。

阅读全文 »

Java动态代理与静态代理

发表于 2017-03-04 | 分类于 Java | 热度:
字数统计: 1,429

我们先看一个简单的例子,当我们需要程序中加入方法执行的日志信息的时候,很显然我们最容易想到的实现方法,就是在方法前后插入日志记录信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.logging.*;

public class HelloSpeaker {
private Logger logger =
Logger.getLogger(this.getClass().getName());

public void hello(String name) {
// 方法執行開始時留下日誌
logger.log(Level.INFO, "hello method starts....");
// 程式主要功能
System.out.println("Hello, " + name);
// 方法執行完畢前留下日誌
logger.log(Level.INFO, "hello method ends....");
}
}

然后这种实现方式有明显的不足,这种切入式的代码(Cross-cutting),会使得HelloSpeaker拥有了本该不属于他的职责,要在hello的同时记录日志。

试想一下,如果程序中的代码到处都是这种日志需求,那么我们的就必须在到处都加上这些日志代码,想必那是很大的工作量,而且当我们需要修改密码的时候,将会变得更加复杂,维护起来变得困难,所以我们自然想到封装,由于很多对象都需要日志记录这种需求,我们何不把日志行为分离出来。

这时候就可以代理模式解决这个问题,代理又分为静态代理(Static proxy)和动态代理(Dynamic proxy)

阅读全文 »

深入理解javascript中的原型

发表于 2017-01-25 | 分类于 javascript | 热度:
字数统计: 2,196

原型prototype是javascript中极其重要的概念之一,但也是比较容易引起混淆的地方。我们需要花费一些时间和精力好好理解原型的概念,这对于我们学习javascript是必须的。

阅读全文 »

设计模式之装饰者模式Decorator_Pattern

发表于 2016-07-27 | 分类于 设计模式 | 热度:
字数统计: 1,751

装饰者模式可以做到在不修改任何底层代码的情况下,给对象增加的新的方法。
首先,我们通过对一个现实问题的模拟分析,了解什么是装饰者模式以及装饰者模式的作用。

阅读全文 »

设计模式之观察者模式(Observer_Pattern)

发表于 2016-07-23 | 分类于 设计模式 | 热度:
字数统计: 1,880

在正式介绍观察者模式前,我们先引用生活中的小例子来模拟观察者,先对观察者模式有一个整体的感觉。


现实模拟

报纸和杂志的故事。
我们看看报纸和杂志的订阅是怎么一回事:

  • 报纸的任务就是出版报纸
  • 我们向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来,只要你是他们的订户,你就会一直得到新报纸
  • 当你们不想再看报纸的时候,向报社取消订阅,他们就不会再送报纸来,你也不会再收到报纸
  • 只要报社还在运营,就会有人向他们订阅或者取消报纸

这其实就可以理解为是一种观察者模式。报社出版者被认为是观察者模式中的Subject,订阅报纸的人被认为是观察者模式中的Observer。具体的观察者模式的subject和observer我们后面会介绍。

订阅者通常有很多个,他们订阅或者取消需要通知出版者。出版者当报纸有更新时,就会把新报纸一起推送给订阅者,所有订阅者都会收到出版社的所有更新。

阅读全文 »
1…567
Liu Chi

Liu Chi

程序员

37 日志
10 分类
14 标签
GitHub 简书 网易云音乐 知乎
推荐链接
  • ProgramCreek
  • Jenkov
  • IBM
  • 美团技术点评团队
  • 阮一峰的个人网站
© 2018 Liu Chi | Site words total count: 88.8k
个人专属
|
Personal's Page —
Liu Chi
0%