多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白。 强烈建议去运行下文章中的示例代码,自己体会下。 1.问题究竟出在哪里? 一个线程执行,固然是安全的,但是有时太慢了,怎....

玩过扮白脸、扮黑脸的游戏吗?你是一个白脸,提供很好且很友善的服务,但是你不希望每个人都叫你做事,所以找了黑脸控制对你的访问。这就是代理要做的:控制和管理访问。就像你将看到的,代理的方式有许多种。代理以....

基本常识:策略模式和状态模式是双胞胎,在出生时才分开。你已经知道了,策略模式是围绕可以互换的算法来创建成功业务的。然而,状态走的是更崇高的路,它通过改变对象内部的状态来帮助对象控制自己的行为。 1.状....

有许多方法可以把对象堆起来成为一个集合(collection)。你可以把它们放进数组、堆栈、列表或者是散列表(HashMap)中,这是你的自由。每一种都有它自己的优点和适合的使用时机,但总有一个时候,....

直到目前,我们的议题都绕着封装转;我们已经封装了对象创建、方法调用、复杂接口、鸭子、披萨……接下来呢?我们将要深入封装算法块,好让子类可以在任何时候都可以将自己挂接进运算里。我们甚至会在本文学到一个受....

在本文,我们将要进行一项任务,其不可能的程度,简直就像是将一个方块放进一个圆洞中。听起来不可能?有了设计模式,就有可能。还记得装饰者模式吗?我们将对象包装其阿里,赋予它们新的职责。而现在则是以不同目的....

要了解控制反转( Inversion of Control ), 我觉得有必要先了解软件设计的一个重要思想:依赖倒置原则(Dependency Inversion Principle )。 什么是依赖....

在本文,我们将把封装带到一个全新的境界:把方法调用(method invocation)封装起来。没错,通过封装方法调用,我们可以把运算块包装成形。所以调用此运算的对象不需要关心事情是如何进行的,只要....

单例模式(Singleton Pattern):用来创建独一无二的,只能有一个实例的对象的入场券。告诉你一个好消息,单例模式的类图可以说是所有模式的类图中最简单的,事实上,它的类图只有一个类!但是,可....

准备好开始烘烤某些松耦合的OO设计。除了使用new操作符之外,还有更多制造对象的方法。你将了解到实例化这个活动不应该总是公开的进行,也会认识到初始化经常造成“耦合”问题。你不希望这样,对吧?读下去,你....

Top