《JAVA与模式》之有感
陆陆续续看了gof,大话设计模式等books,对于设计模式仍然是徘徊于门外,随偶有感悟,然久必忘记,是实则悟性太低。
因此作此文,结合博客中一系列关于设计模式的博文,加深对设计模式的理解,同时备自己随时复习。
1.设计模式应用场景
当我们遇到整个应用生命周期中,只需要一个对象的时候,我们首先考虑到的就是使用单例,当我们需要根据不同的产品线组合生产不同产品的时候,我们知道可以使用抽象工厂
当我们需要动态的给一些类新增功能的时候,我们知道java的IO使用的就是装修模式来解决这个问题。
因此,合适的场景+适当的设计模式才能彰显出设计模式的优势和代码之美。如何做到在合适的场景使用适当的设计模式,则需要我们不断的在应用过程中去思考,抽象出情景特性
,与相适应的的多个设计模式进行匹配,找到适合的模式进行代码功能实现。
2.设计模式代码框架
我认为每个设计模式,单纯的从代码的角度来看,必然有其一定的规律性,则就可以将它固化,形成一个套路,就是代码的框架
3.设计模式本身剖析
对于每个设计模式本身,其又有特殊性,诸如工厂模式包括简单工厂和抽象工厂,享元模式包括单纯和复合,代理模式包括静态代理和动态代理
静态代理有了,为什么又需要动态代理,搞清楚了这些,对于设计模式的使用是有裨益的
4.设计模式之间区别
种种设计模式之间,其是有一定联系又相互贯穿,好比享元模式中就用到了工厂模式和组合模式,桥接模式与策略模式的区别,策略模式与状态模式的区别等等
通过对比,也是可以加深对于设计模式的理解
目前有感于此,后续慢慢补充,欢饮补充和拍砖。。
《JAVA与模式》之有感的更多相关文章
- 《JAVA与模式》之观察者模式
转自:http://www.cnblogs.com/java-my-life/archive/2012/05/16/2502279.html 在阎宏博士的<JAVA与模式>一书中开头是这样 ...
- JAVA的模式对话框和非模式对话框
周末的时候,一位网友让我帮他把他的无模式对话框改成有模式对话框. 界面是由swing制作的,都是JFrame,我从来没有接触过swing编程.大致的代码还是看的懂,很多都和C#很相似. 然后就去查资料 ...
- java工厂模式
(1)概念大白话:java工厂模式就是客户端(main函数)要创建对象觉得麻烦就让另外一个叫工厂的类帮它创建,然后自己每次要创建对象就叫工厂帮它弄,举个例子,在没有工厂这个"手下" ...
- 《JAVA与模式》之单例模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的 ...
- <代码整洁之道>、<java与模式>、<head first设计模式>读书笔记集合
一.前言 几个月前的看书笔记 ...
- Java代理模式
java代理模式及动态代理类 1. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目 ...
- [转]阎宏博士的JAVA与模式
阎宏,1964年出生于天津市.1987年毕业于中国科技大学近代物理系,1990年于中科院理论物理所获硕士学位,1992年获博士学位,翌年赴日本京都大学进行博士后研究工作. 作者曾于美国花旗银行(Cit ...
- 《JAVA与模式》之适配器模式(转)
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- 《JAVA与模式》之享元模式
<JAVA与模式>之享元模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨 ...
- 《JAVA与模式》之策略模式
<JAVA与模式>之策略模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法 ...
随机推荐
- java使用省略号代替多参数(参数类型... 参数名)
J2SE 1.5提供了“Varargs”机制.借助这一机制,可以定义能和多个实参相匹配的形参.从而,可以用一种更简单的方式,来传递个数可变的实参.本文介绍这一机制的使用方法,以及这一机制与数组.泛型. ...
- 网页IE轻松调用VLC播放器实现监控(组件+方法大全)【转】
公司突发奇想,要把刚买回来的网络监控机用自己内部网站在线监控. 作为网站的开发员,我接下了这个任务. 网络上有很多资料参与,但是都不全都不尽人意,最后经过多次的不同关键字的查找和测试,总算让我成功了. ...
- iOS开发-Interface Builder的前世今生
Interface Builder,是用于苹果公司Mac OS X操作系统的软件开发程序,Xcode套件的一部分,于1988年创立.它的创造者Jean-Marie Hullot自称是“一个热爱旅行.充 ...
- Div+Css实现段落首行缩进两个字符(text-indent标签)
段落前面空两个字的距离,不要再使用空格了,用CSS实现段落首缩进两个字符.应该使用首行缩进text-indent.text-indent可以使得容器内首行缩进一定单位.比如中文段落一般每段前空两个汉字 ...
- jQuery EasyUI 教程-Tooltip(提示框)
<!DOCTYPE html> <html> <head> <title>jQuery Easy UI</title> <meta c ...
- 查看sedna创建的数据库和集合,文档之类
在sedna的安装文件夹下.看一下cfg文件夹: <pre name="code" class="plain">[xuzhina@localhost ...
- 从头认识java-特辑-你不知道的main函数
这一章节我们来讨论一下main函数. 对于这个函数大家都不陌生,并且都习以为常.可是当中有一些东西,还是值得我们去总结的. 1.普通的main package com.ray.test; public ...
- Jmeter-Maven-Plugin高级应用:Log Levels
Log Levels Pages 12 Home Adding additional libraries to the classpath Advanced Configuration Basic C ...
- EM算法求高斯混合模型參数预计——Python实现
EM算法一般表述: 当有部分数据缺失或者无法观察到时,EM算法提供了一个高效的迭代程序用来计算这些数据的最大似然预计.在每一步迭代分为两个步骤:期望(Expectation)步骤和最大化( ...
- 多个桌面Deskspace如何使用
1 给Deskspace设置背景.在DeskSpace选项中设置显示背景为天空箱体图像(软件自带的图像效果,也可以使用静态图像,即自己的图片) 2 给六个桌面各设置一个背景(也可以使用同一个背景)右击 ...