Zer0e's Blog

Zer0e's Blog

Facing the ideal and the reality.

谈谈设计模式
前言设计模式是提高代码可读性的途径之一,面对不同的场景选择不同的设计模式,可以提高代码可读性,提高代码的可重用性还有可扩展性。接下来就讲讲什么是设计模式。 正文何为设计模式设计模式是在面向对象语言中,思想都是一致的,而在面向过程语言,函数式编程的语言中讨论设计模式是没有意义的。所谓的设计模式,就是前面提到的,在面向对象编程中的一...
设计模式之组合模式
前言这篇是23种设计模式的最后一篇了,不知不觉整理了一个月,其实应该快点整理完,每天一到两篇文章虽然量不多,但是写的时候其实挺累人。言归正传,本文来讲最后一种设计模式,组合模式。 正文概念组合模式又称部分整体模式,它属于结构型模式,通常适用于有结构的系统,用于表示部分与整体层次。顺带一提,这里的有结构一般是树形结构。那这个模式他...
设计模式之享元模式
前言本文谈谈享元模式。 正文概念享元模式属于结构型模式,它主要是缓存重复的对象,以减少内存的消耗,这些相同的对象往往需要重复的使用,如果不对其进行缓存,可能会导致内存溢出。那享元模式一般配合工厂模式一起使用。常见的应用场景有Java中的String,在创建String时判断缓存池里是否有这个字符串,有的话直接返回,没有才进行创建。 ...
设计模式之构建模式
前言构建模式又称建造模式,建造者模式等等。本篇来简单谈谈这种设计模式。 正文概念构建模式(Builder Pattern),由于存在多种叫法,为了统一名称,统一写作Builder模式。它属于创建型模式,是使用一个个对象构建复杂对象的设计模式。它的意图在于拆分复杂对象,使得可以由子对象生成,子对象相对稳定,通过组合子对象来构造复杂...
ArrayList扩容之后内存地址会发生改变吗?
前言那标题的这个内容,是我在面试时候的一道问题。那这篇文章我们来讲讲ArrayList的扩充机制以及扩容之后会发生什么样的改变。 正文基础首先使用过Java的基本上都用过ArrayList,那它是一个数组队列,其实现了List接口,那ArrayList的底层是一个动态数组。我们来看看默认的构造器 123public ArrayLis...
浅谈Java内存模型
前言想写一篇文章,由于涉及到Java内存的知识,就先来写写前置知识。那本篇就来说说JVM的基础,Java内存区域与Java内存模式(JMM)。ps. 本篇基本上想到哪里说到哪里,并无什么先后顺序。 正文Java内存区域那我相信学习过JVM的同学基本上都知道JVM将运行时内存划分为几个区域。总体上可以分为两类:线程共享区域与线程私有区...
设计模式之访问者模式
前言本篇来讲讲行为型模式的最后一篇,访问者模式。 正文概念访问者模式,我们使用一个访问者类来访问数据对象,通常是为了不污染数据对象类,而实现的关键是在数据对象类中提供一个接待访问者的接口。那这种设计模式了除了不污染原类,很大一部分原因是为了将数据结构与操作相分离。 实现由于这种设计模式在开发中很少用,一般是在框架或者源码中才会使用到...
设计模式之模板方法模式
前言本篇聊聊模板方法模式。 正文概念模板方法模式属于行为型模式,它定义一个模板结构,然后让其子类去实现。其主要作用是提高代码的复用性,并且在不改变模板的情况下子类能重写方法。那这种设计模式就十分常见了,在父类中定义执行顺序,子类再去具体的去实现,这就是模板方法模式。 实现举个例子,比如我们平常去超市买东西,基本上分为几个步骤,拿...
设计模式之备忘录模式
前言本篇来谈谈备忘录模式。 正文概念备忘录模式保存对象的某个状态,以便当需要时恢复这个状态,它属于行为型模式。它又称快照模式或token模式。它的意图是在不破坏封装的条件下,将对象的状态保存下来,并存储,并且可以在未来的某个时刻恢复。这个模式涉及三个角色: 备忘录(Memento):将发起人对象的内部状态存储起来,并且可以保护不被...
设计模式之状态模式
前言本篇来谈谈状态模式。 正文概念状态模式属于行为型模式,在这个模式中类的行为是根据类的状态发生改变的。在类中维护一个状态变量,当其改变时类的行为就发生改变,看上去就跟改变了类本身一样。那状态模式涉及的角色有: 环境(context):上下文,通常定义客户端可用的接口,内部维护一个状态实例,根据这个状态做出不一样的行为。 抽象...
avatar
Zer0e
耿直的现实主义者 / 喜爱安全的web狗 / 无情的bug制造机器