Java设计模式
本专栏中的大部分内容是基于《Head First 设计模式》,当然也会有很大程度的不同。而关于设计模式的示例代码都上传到我的 GitHub 上了,地址:https://github.com/qwhai/design-pattern
Q-WHai
O ever youthful,O ever weeping.
展开
-
Java 设计模式——状态模式
很多人在说状态模式的时候总拿策略模式来进行对比,可能他们的类图会有一点类似,可我却不认为他们有多么相像。你可以阅读《Java设计模式——策略模式》这篇博客,并与本文对比,以找到蛛丝马迹。他们最根本的差异在于策略模式是在求解同一个问题的多种解法,这些不同解法之间毫无关联;状态模式则不同,状态模式要求各个状态之间有所关联,以便实现状态转移。原创 2016-06-06 16:46:00 · 15575 阅读 · 2 评论 -
Java 设计模式——外观模式
今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式。本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解。希望于你有益。原创 2016-06-06 00:11:17 · 6402 阅读 · 2 评论 -
Java 设计模式——组合模式
有时我们可能会被要求处理一个层级结构明显的对象,比如上下级的公司员工、比如层级嵌套的文件夹,还有丰富多彩的美食菜单。可是,我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些,学习一些新的技能,让你秒刷副本。原创 2016-05-17 17:39:45 · 19634 阅读 · 1 评论 -
Java设计模式——适配器模式
我们总是在一件事情上有一些为难。一个比较经典的案例就是,比如我有一个双孔插座,但是我的电脑是三脚的插头,我怎么把这个三脚插头插进这个双孔插座里面去?原创 2016-01-05 19:31:18 · 2548 阅读 · 1 评论 -
Java设计模式——代理模式
前言 上一篇说到了策略模式。单类图上来说,它和本篇要说的代理模式还真是有些像似。都需要一个公共的接口,还有一些实现类。代理类(包装类)封装了一个接口对象,提供客户端调用。这些都很类似。不过,有一个细节需要我们注意一下,那就是这里的代理类也需要去继承这里的公共接口。而在策略模式中,包装类则不需要这么做。概述 代理模式就是定义一个原对象的代理对象,来帮助原对象和系统之外的业务作沟通。也...原创 2015-12-19 22:49:12 · 2785 阅读 · 1 评论 -
Java设计模式——策略模式
策略模式其实是为了解决,针对同一个问题有多个不能的解决方式,也就是说提供了多种不同的解决策略。比如,我们对一个数组进行排序。那么这里就有冒泡排序、快速排序、归并排序等等不同的算法,这里我们就可以说这些是不同的策略。可以把这些不同的排序算法设计成策略模式。原创 2015-12-16 13:37:15 · 2898 阅读 · 1 评论 -
Java设计模式——Builder模式
builder模式的使用目的是为了将构建复杂对象的过程和它的部件解耦。将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。原创 2015-12-11 13:47:23 · 5248 阅读 · 2 评论 -
Java设计模式——工厂模式
前言 工厂模式是一种比较常见的创建模式。有时,可能你使用了工厂模式而你却还不知道你已经使用了它。至少我感觉下面说的第一种简单工厂模式,你是已经很熟悉了。并且是经常使用的。不信,就继续向下看。版权说明著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。本文作者:Q-WHai发表日期: 2016年4月14日本文链接:https://qwhai.blog.cs...原创 2015-12-10 09:37:55 · 50343 阅读 · 8 评论 -
Java设计模式——观察者模式
本文通过两个实例(分别是“气象观测站”和“计时器应用”),对Java设计模式中的观察者模式做一个详细的说明。原创 2015-11-25 00:35:51 · 19586 阅读 · 6 评论 -
Java设计模式——单件模式
有一些对象其实我们只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象,充当打印机、显卡等设备的驱动程序的对象。事实上,这类对象只能有一个实例,如果制造出多个对象,就会导致许多的问题产生,例如:程序的行为异常、资源使用过量,或者是不一致的结果。原创 2015-05-26 14:25:50 · 5336 阅读 · 0 评论 -
Java设计模式——装饰者模式
本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型滥用问题。你将在本章学到如何使用对象组合的方式,做到在运行时装饰类。为什么呢?一旦你熟悉了装饰者的技巧,你将能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。原创 2015-05-25 15:57:36 · 3414 阅读 · 0 评论