通过Java Swing看透MVC设计模式

一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由两个主要的部分构成,一部分使得它具有了按钮应该具有的动作特性,例如可以被按下。另外一部分则负责它的表现,例如这个按钮是代表了A还是B。    看清楚这两点你就发现了一个很强大的设计方法,这种方法

单例模式中为什么用枚举更好

枚举单例(Enum Singleton)是实现单例模式的一种新方式,尽管单例模式在java中已经存在很长时间了,但是枚举单例相对来说是一种比较新的概念,枚举这个特性是在Java5才出现的,这篇文章主要讲解关于为什么我们应该使用枚举来实现单例模式,它与传统方式实现的单例模式

JDK源码分析——动态代理源码(Proxy类)

读源码,怕过两天又忘记了,还是记录下吧.. 动态代理最重要的实现就是Proxy.newInstance ,那我们直接看这个方法 public static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)//这里有三个参数,第一个是传入classl

装饰器(Decorator)模式

  Decorator设计模式是典型的结构型模式(在GOF的那本模式的Bible中将模式分为:1.创建型模式;2.结构型模式;3.行为模式三种)。它的主要用意是:动态地为对象添加一些额外的功能。(记住上面两种颜色的词汇,理解装饰器模式的精髓所在!)下面是GOF的《Element of reusable Object-Oriented Software》中对D

java设计模式—工厂模式

简单工厂模式是类的创建模式,又叫静态工厂方法(static factory method),负责将大量有共同接口的类实例化,可以动态的决定将哪个类实例化,不必事先知道要实例化哪个类。 顾名思义,就像是工厂的功能,客户需要什么样的产品,工厂就能生产。但是产品之间应该有某种关联性,即有共同的接口,不能让一个工厂去生产火腿肠。工厂模式中创建是不同类的对象。 工厂的老板可以根据客户不同的需要进

设计模式——策略、代理模式

属于对象行为模型,用意是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使他们互相替换;将算法的责任和算法本身分隔开,委派给不同的对象管理,把算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说就是:准备一组算法,并将每一个算法封装起来,使他们可以互换。类图如下: 这个模式设计到三个角色: 环境(context):持有一个strategy类的引用

《JAVA与模式》之解释器模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的:   解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式的结构   下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:

Java的设计模式

生命中唯一不变的事实就是世事时刻在变。这在软件开发的每一个阶段都不可避免。我们所要面对的挑战是:要以最小的延迟和最大的灵活性来适应变化。 令人欣慰的是有人已经解决了你的设计问题,而且他们的方法已经形成了最佳实践了;这些公认为最佳实践的方法就是“设计模式”。今天我们要研究两个最流行的设计模式,学习怎样使用好的设计让你得代码更干净,让扩展性更好。 适配器模式(Adapter Design

JDK源码分析之Set类详解——适配器模式的应用

JDK源码中Set类是我们开发过程中经常用到的,那么本文将会向你介绍JDK源码中Set类的一些构造,使我们在编程中高效的应用。 JDK源码分析Set类,因为Set类是经常要用到的,那我们知道JDK源码中Set类在其中不可以有相同的元素,那么判断这个元素是否相同是如何实现的呢,我们看下下面这张图: 对JDK源码分析之Set类在这张类图上,

Java源码分析:深入探讨Iterator模式——迭代器模式

java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。 下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。 本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×