-
怎么去理解JAVA设计模式30
我是Java初学者,最近在考虑如何去理解设计模式,如何去有效的使用它,最好有什么例子去参考,因为设计模式肯定是从解决问题中产生的,设计模式是提供一种思路,或者是一种解决方法的。希望他们提供一些例子做参考
问题补充:[/size][size=medium][align=center][/align][color=green][/color]我很认真看了大家的答案,我的观念是软件本身是没有任何价值的,但它是一种解决问题的思路,我想了解一下实际生活中发生的案例,最好是在企业管理或者是生产领域起到很大促进效果的精彩,然后回归设计模式中是怎么思考的2011年8月03日 16:55
51个答案 按时间排序 按投票排序
-
我也在学设计模式,为什么我会想到学设计模式呢?这是在一次老师叫我们写一个车票管理系统,我是用swing写的一个界面,结果这个界面有一些弹出窗口,还有增删改查之间的协调,还有各种按钮之间的联系,总之,关系比较多,常常遭遇顾此失彼的局面,而且写很多重复的代码,没有做到代码的重用,感觉自己没有一种协调处理事物的能力,于是我才去看设计模式的
2011年8月07日 12:08
-
新手的话,没有大量编码经验,你就算看书的时候能明白这个设计模式的思路,但是你仍然无法运用,先搞清楚基础,多写代码,碰到问题再去想用设计模式解决。。单纯的学设计模式是没有任何用处的,因为你什么也学不到。。
2011年8月06日 13:04
-
怎么说呢,书不重要,书中的例子都是小实例,所以你感受不明显。你要转换思维,从工程的角度去看待,就好像你有很多程序员为你工作,你就会想到利用流水线去为他们分配工作,而不是你自己一个人去编码,才能体会到设计模式的优越性!
2011年8月06日 09:55
-
程序员和设计模式的关系就像人和婚姻的关系,你不知道的时候急着去探求他但这个东西是需要阅历和经验的激励的,不是看看书或者看看代码就能掌握的。即使你通过看书知道了是怎么回事,对于你也没什么太多用处。只有在工作中平时注意慢慢体会了,时间长了总有一天你会发现“那人却在灯火阑珊处”,所以在我看来没必要急着去深究这个问题。。。。
2011年8月06日 09:23
-
最常用的设计模式,就那么几种:工厂模式,生产产品的工厂,Spring容器就是一个大工厂,单例模式:多个对象,共享一个类变量,构造方法私有化,在类中创建对象,通过static 方法调用,减少内存的占用。观察者模式,桥接模式,策略模式
2011年8月05日 20:56
-
问这个问题我想 大都是和我一样的 菜鸟!曾经的曾经我也这么发问,但是还好当时有一本设计模式的书在公司可以看,那个时候看了又看,但是没感觉到模式的好处。。。我想楼主现在和我问题差不多!
我就正面回答你的问题吧,模式不是说刚毕业或者刚工作就能去理解 就能去运用的,个人觉得对新手来说,还是写代码更好,正所谓功到自然成!楼主又何必拘泥于 设计模式呢?
设计模式都是经历 长时间的实践的 我们这些菜鸟 代码都没写多少上来就 说着模式那模式的你不觉得很好笑。。。。
我觉得楼主还是 梳理一下自己的学习思路吧。。。。2011年8月05日 17:38
-
设计模式这东西, 你开发中时时在用.. 只是没关注之前不知道有设计模式这个叫法而已.
个人觉得, 不要太过于关注 很多人因对模式痴狂 不解..
设计模式理解需要很好的面向对象思维.. 如果你只是想认识下 可以看看论坛.有人写过一本书 基本像看故事一样看完.不过只能认其形
1.在没有深入对象思想之前不要深究
2.有好的oo思想之后 基本上深入也跟看小说一样.
3.利用工作去学习这些 以现有的成本去学习这些设计模式 对象思想等
仅供参考2011年8月05日 11:53
-
无论是java,还是.net,我觉得面向对象的思想一定要先建立起来,我认为面向对象的核心在于怎样把自己写的程序跟现实世界一一对应起来。就像定义了一个人这个类一样,人是个类,人有眼睛、鼻子、嘴、耳朵、四肢~~~~~,这些就是人这个类的属性,也就是说人有什么;一个人,能呼吸、吃饭、睡觉~~~~,这些就是类里的方法,也就是说人能干什么。建立起这个思想后再看代码,应该就没那么难了,最起码有个整体的概念,有方向感,这是最重要的,至于具体的代码怎么写,那就是技术和经验的事了,需要不断地学习、接触才行。以上纯属个人理解~~
2011年8月05日 11:38
-
设计模式本来就是一种思想,一种问题解决的方案。你想一下子看明白是不可能的,你没有真正的遇到问题,只能够模拟和一种猜测的想法去想问题。这样有时候是不能理解的。我自己也一直在看设计模式的书,可以由简单容易的入手:比如大话设计模式。之后可以看:研磨设计模式。最后还是要实际中理解和运用设计模式。总好能结合实例来理解。可以从常用简单的模式开始理解:比如:工厂模式,单例模式
2011年8月05日 11:24
-
其实设计模式这是一种思想,具体用哪种,或是怎么样,完全看你自己的理解和对项目的把控程度1
其实我原来也不了解设计模式,做开发做了一年多了!很多客户的需求是不停的修改,不停的更换,有时候甚至要从新整理项目的整个架构! 现在我看着 《大话设计模式》呢,首先理解各个模式的思想,然后就有了自己的思想了!关键是通过模式的运用来达到让代码简练、容易修改和扩展!
以上是个人理解!
学无止境!2011年8月05日 10:56
-
先把常用的模式都看一次,再找些使用了模式的代码看看,理解为什么要用它,再在编程过程中慢慢感觉体会它,最后才是享受它为你带来的好处。
2011年8月05日 10:43
-
编写程序就像排兵布阵,设计模式就像兵书,既要做到各种兵法了然于胸,又要防止纸上谈兵,我觉得要做到两点:(1)各种模式你首先要了解,尽量多读,先学个型;(2)在编程过程中要用,要敢于在代码设计阶段考虑引入何种模式降低程序耦合度,隔离变化点等;(3)可能有时候用的不对,把简单问题复杂化了,这时候你还要广泛的阅读优秀开源代码,在阅读别人的程序中仔细体会各种模式的妙用。
2011年8月05日 10:41
-
《大话设计模式》这本书写的挺具体的,从生活中举例来说明,写得很好;不过设计模式最好是从手工自己用代码去实现一个功能,然后与相应能够实现该功能的设计模式写法相比较,多悟多学习,这样才有收获,建议楼主研究下现在比较著名的一些框架源码,里面有很多很好的设计模式例子
2011年8月04日 21:28
-
引用我很认真看了大家的答案,我的观念是软件本身是没有任何价值的,但它是一种解决问题的思路,我想了解一下实际生活中发生的案例,最好是在企业管理或者是生产领域起到很大促进效果的精彩,然后回归设计模式中是怎么思考的
设计模式是用来解决软件本身的问题,并不是用来解决领域的问题。
设计模式主要是用于解决软件的复杂度的问题,通过各种抽象和模块化的手段,使得软件易扩展,易维护。
在最早的软件设计中是没有设计模式的概念的,设计模式是后人通过总结以前的各种软件的设计方法,把其中常用的方法根据软件设计的不同场景分类,总结成设计模式。所以设计模式其实是一种方法学,而且设计模式不是一成不变的,随着技术的变化,不断有新的模式出现,例如NULL Pattern,Memory Cache,这些不属于GoF设计模式的范畴,但是在现代的软件设计中也是非常常用的。
在学习设计模式之前,建议先学习下面向对象的知识,如抽象,接口,多态等。对面向对象的知识深入了解之后,设计软件的过程中设计模式自然而然就显现出来了。2011年8月04日 19:38
-
要理解设计模式,首先要理解软件的本质是什么?对程序员来说,软件的本质就是Coding,而设计模式就是关于代码编写经验的总结。设计模式关注结构化的代码设计,通过一些策略的引入,能够带来更大的系统灵活度,本质是为了控制变化(把变化控制到点),是提高代码质量,软件工程化生产的重要基础。
因此,设计模式的学习应该以实践领悟为主。首先关注概念的内涵,对现有的设计模式进行领悟;其次,在编码中实践,也就是根据你的领悟,根据应用场景,对你的代码进行重构,在实践中,逐渐达到一种设计模式思想的成熟。
综上所述,设计模式是思想上的能力成熟度,如何提高是要在实践中不断体会的。具体例子,可以先从创建型模式:工厂模式学起,至于它带来的好处,可以考虑Spring IOC.2011年8月04日 18:04
-
设计模式是开发经验的总结,与其去注重设计模式的学习,不如平时多注意良好的编码习惯,重构是本不错的书,避免代码中的坏味道,自然就要使用到设计模式。
可以尝试去看看名家的代码,熟读唐诗三百首,不会写诗也会呤,apache-commons是不错的学习典范。可以从开源的代码学习中去寻找模式,看看运用这些模式带来什么好处。2011年8月04日 14:59
-
head first设计模式,最好手工写一下代码,刚开始死记下来,因为没有一两年编程经验,设计模式在大脑中没有什么感觉,先在大脑中死记下来用法,当你遇到问题的时候,你会自然的想到其中某一个设计模式。
2011年8月04日 14:23
-
如果楼主是一位java初学者,暂时先不要考虑怎么样运用模式,先把java基础打好,熟悉java的特点。建议经过两年左右的编码后,再结合自身实际考虑模式的学习和运用。
2011年8月04日 12:52
-
我认为设计模式的学习不应该先学,而应该先用,怎么用呢。比如说最近你接了一个新的任务要开发一个模块。好了这时不要忙着动手做,首先规划好改模块与其他模块之间的关系,可扩展性还有对系统的效率等方面的要求。这时你就可以想了,创建对象方面比如有工厂模式,单例等等可以选用。如果说非要有什么好的例子可供学习的话,建议你看一看apache tomcat项目中的一些代码,从中体会设计模式,里面涉及了很多设计模式。想要入门的话推荐你去ibm的开发者社区,里面有一篇关于设计模式的文章。下面的是链接http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html
2011年8月04日 12:00
-
经验确实来自一定的积累,试错的经验,就自己脑子里的想法去实现代码。到时候等自己是在无法忍受的时候再试着去修改,优化。这样比直接看设计模式之类的更有用。等自己没折的时候再去看书。这个时候看书的时候就能想到自己之前所犯的错误,知其然,知其所以然。初学者不建议看设计模式!apache common包下面的很多小工具代码之类的本身就是很好的学习素材,我也在看,共同提高了!!
2011年8月04日 11:11
-
楼上几位都说的很正确,目前初级阶段多注重代码的质量,每次写完一段代码,要不断的反思与总结你所写的代码,了解你代码中的长处和短处,只要你不断的总结,优秀的代码自然而然就能编写出来。当你有一定的基础的时候,你的编程思想与习惯就会逐渐的形成,如果刚开始就为设计而设计,最终会因为不能理解思想而导致程序乃至整个模块都无法健全。
如果要快速的掌握面向对象的思想,建议你多用现实世界的模型来参考,面向对象其实就是抽象现实世界,为什么要抽象现实世界,因为现实世界的规律和物质都是稳定的,如果你明白如果抽象,那么对于现在大多数的设计模式你就能很快的掌握。
在编写代码的时候,思考的时间应该大于写代码的时间,养成使用笔来描绘你的设计,掌握一种设计的技能,最基本的技能就是UML,熟练的掌握UML图,因为只有用图你就能清晰的了解到你整个模块和系统的交互的关系,对象的生命周期,正因为如此,你就能够设计优秀的代码。
所以设计模式并不是最重要的,重要的是经验和不断的总结,经验来自哪里?初学者要学会模范优秀的代码,何为优秀的代码?建议你去读《实现模式》以及《Effective Java》,耐心的去品读这两本书,不需要一口气读完。能理解多少,就读多少,最难做到的是,逼迫自己按照前辈总结的这些经验去编写代码,只需要按照他上面所说的做,你就可以做到,其实也并非那么难。2011年8月04日 09:52
-
我建议初学者,不要学习设计模式。
说的简单点,上面很多好心人给你举了一些很生动的设计模式的例子,你真正的理解了他们的用法了吗? 答案是,肯定不可能的,这些东西没有一定的代码量做基础你是根本不可能理解到位的或者说干脆不理解。
至于,你要问怎么去理解设计模式,那我可以按照我的理解跟你说一下,至于有没有帮助,就看合不合你的口味了。
设计模式,与具体的编程语言无关,它可以理解为面向对象程序设计语言针对某一些场景成熟的且在理论上较为合理的解决方案。
建议:多阅读一些标准库代码和知名的第三方插件代码。2011年8月04日 08:48
-
作为一个Java初学者的话,我也非常不建议你现在就关心设计模式,你现在最重要的是学习好Java的基础知识!在你的代码量达到一定的量时,再来看设计模式你会更加清楚些,不要太拘泥于设计模式!JDK本身就包含了许多的设计模式的思想,楼主可以参考下面的链接内容:http://coolshell.cn/articles/3320.html
2011年8月04日 08:44
-
我建议楼主先不要去太过于关心设计模式这个东西。。。你要是代码量不够的话。。。学了也没多少收获。。而且设计模式是比较无形的东西。。。它不像一般的那些技术实现手段容易掌握。。。当你有一定代码量了。。见得多了。。。遇到具体的问题就自然而然的知道用什么构架。。用什么模式。。。而不是拘泥于设计模式的种类与名字与结构。。。。而是一种自然而然的应用。。。那时候就算真正的掌握了设计模式
2011年8月03日 19:45
-
楼上的都很专业的回答,让我惭愧万分。
我也是一个初学者,在此说说我的理解,JAVA不正是面向对象语言吗?
那么再解决问题时需要用钳子,那么先写一个工具箱出来,然后使用钳子,就NEW出来
一个钳子的实例,在通过(钳子.方法),来解决问题。不用的就放着,等待其它问题出
现时使用,即所谓兵来将挡水来土掩。需要谁,我NEW谁来解决。
呵呵,献丑了。2011年8月03日 18:02
-
//刚刚到吴国的时候拆第一个
System.out.println("-----------刚刚到吴国的时候拆第一个-------------");
context = new Context(new BackDoor()); //拿到妙计
context.operate(); //拆开执行
System.out.println("\n\n\n\n\n\n\n\n");
//刘备乐不思蜀了,拆第二个了
System.out.println("-----------刘备乐不思蜀了,拆第二个了-------------");
context = new Context(new GivenGreenLight());
context.operate(); //执行了第二个锦囊了
System.out.println("\n\n\n\n\n\n\n\n");
//孙权的小兵追了,咋办?拆第三个
System.out.println("-----------孙权的小兵追了,咋办?拆第三个
-------------");
context = new Context(new BlockEnemy());
context.operate(); //孙夫人退兵
System.out.println("\n\n\n\n\n\n\n\n");
/*
*问题来了:赵云实际不知道是那个策略呀,他只知道拆第一个锦囊,
*而不知道是BackDoor这个妙计,咋办? 似乎这个策略模式已经把计谋名称写出来了
*
* 错!BackDoor、GivenGreenLight、BlockEnemy只是一个代码,你写成first、second、
third,没人会说你错!
*
* 策略模式的好处就是:体现了高内聚低耦合的特性呀,缺点嘛,这个那个,我回去再查查
*/
}
}
就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了,
还有一个就是扩展性,也就是OCP 原则,策略类可以继续增加下去,只要修改Context.java 就可以了,这
个不多说了,自己领会吧。
想整个一篇都发上来,可是不让发,应该是限定了字数的,作者写的很有意识,虽然长了点,但是看起来不会觉得累2011年8月03日 17:52
-
然后再写三个实现类,有三个妙计嘛:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 找乔国老帮忙,使孙权不能杀刘备
*/
public class BackDoor implements IStrategy {
public void operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 求吴国太开个绿灯
*/
public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println("求吴国太开个绿灯,放行!");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 孙夫人断后,挡住追兵
*/
public class BlockEnemy implements IStrategy {
public void operate() {
System.out.println("孙夫人断后,挡住追兵");
}
}
好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 计谋有了,那还要有锦囊
*/
public class Context {
//构造函数,你要使用那个妙计
private IStrategy straegy;
public Context(IStrategy strategy){
this.straegy = strategy;
}
//使用计谋了,看我出招了
public void operate(){
this.straegy.operate();
}
}
然后就是赵云雄赳赳的揣着三个锦囊,拉着已步入老年行列的、还想着娶纯情少女的、色迷迷的刘老
爷子去入赘了,嗨,还别说,小亮的三个妙计还真是不错,瞅瞅:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
*/
public class ZhaoYun {
/**
* 赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计
*/
public static void main(String[] args) {
Context context;2011年8月03日 17:50
-
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
先说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用JAVA 程序
怎么表现这个呢?
三个妙计是同一类型的东东,那咱就写个接口:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
*
*/
public interface IStrategy {
//每个锦囊妙计都是一个可执行的算法
public void operate();
}2011年8月03日 17:49
-
设计模式是一种思想,不容易掌握。如果想学的话,我建议看《大话设计模式》 虽然是C#语言写的,但是本人感觉不错。还有就是可以看看java源码中的一些设计模式代码,这样有利于深刻理解设计模式。
2011年8月03日 17:06
相关推荐
Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种在特定情境下为了解决常见问题而制定的通用解决方案的描述。它们描述了...
### Java设计模式详解 #### 一、背景与概念 在软件工程领域,设计模式是一种用于解决常见问题的可重用解决方案。《Java设计模式PDF》是一本由James W. Cooper编写的经典书籍,该书详细介绍了Java编程语言中的设计...
《Java设计模式》课程设计报告主要探讨了如何利用Java编程语言和MyEclipse集成开发环境来实现基于设计模式的西瓜市场系统。这个项目涵盖了四种重要的设计模式:单例模式、代理模式、建造者模式和抽象工厂模式,为...
Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...
### Java设计模式(刘伟) #### 一、引言 在《Java设计模式》这本书中,作者刘伟全面地介绍了24种经典的设计模式,并通过丰富的案例和代码示例进行了详细的解析。本书不仅适合初学者作为入门教材,也适合有一定...
刘伟老师的《Java设计模式》课后答案PDF文件,包含了对书中各章节练习题的详细解答,这对于读者理解每个设计模式的实现和应用场景非常有帮助。通过学习这些答案,读者可以更好地巩固所学知识,将理论与实践相结合,...
《Java设计模式》是刘伟老师撰写的经典教材,它为Java程序员深入理解和应用设计模式提供了极佳的学习资源。设计模式作为软件工程中解决特定问题的典型方案,是每一个有志于成为高级开发者的程序员不可或缺的知识储备...
Java设计模式是软件工程中的一种最佳实践,它提供了一套标准的解决方案,用于解决在编写可维护、可扩展和高效代码时经常遇到的问题。这些模式是经验丰富的开发者们在面对相似问题时,经过反复试验和优化后总结出的...
《尚硅谷_韩顺平_图解Java设计模式》是一份详尽的Java设计模式学习资料,由知名教育机构尚硅谷的讲师韩顺平精心编撰。这份笔记全面覆盖了设计模式的重要概念、应用场景以及实战技巧,是Java开发者学习和复习设计模式...
Java 设计模式,第二版,电子工业出版社出版 本书通过一个完整的Java项目对经典著作Design Patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为...
在软件开发领域,设计模式是经验...理解并熟练应用这些设计模式和原则,能够帮助我们编写出更优雅、可维护和易于扩展的Java代码。在实际开发中,我们应该根据具体问题选择合适的设计模式,以提高软件的质量和生命力。
《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...
这份名为"java设计模式PPT"的资料集合,包含了关于JAVA设计模式的书籍和PPT,对于不同水平的开发者都有很大的学习价值,无论是初学者还是希望深入理解JAVA开发模式的专业人士。 首先,我们要理解设计模式的核心概念...
您是一个初级的 coder,可以从中领会到怎么设计一段优秀的...您是一个高级程序员,可以从中全面了解到设计模式以及 Java 的边角技术的使用;您是一个顶级的系统分析师,可以从中获得共鸣,寻找到项目公共问题的解决办法
阅读《Java设计模式(疯狂Java联盟版)》,读者将能够理解并熟练运用这些模式,从而编写出更加高效、优雅的Java代码,为软件项目的长期成功打下坚实基础。无论是初学者还是经验丰富的开发者,这本书都是深入理解和...
这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的解决方案的标准化描述,它们在软件工程中起到了重要的作用,帮助开发者创建可维护、可扩展且易于理解...
本资料“java设计模式学习”包含了对设计模式的深入理解和实际应用,通过简单实用的例子,帮助开发者掌握如何在Java项目中运用设计模式。 首先,我们要介绍的是工厂模式。工厂模式是一种创建型设计模式,它提供了一...
根据描述,这份资料包含了多个部分,包括全英文的影印版、详细的解释以及理论性的DOC文档,为深入学习和理解Java设计模式提供了丰富的资源。 设计模式通常分为三类:创建型、结构型和行为型。创建型模式涉及到对象...
本电子书集合深入浅出地剖析了Java设计模式,旨在帮助开发者理解和应用这些模式,提升编程技能。 首先,让我们探讨“设计模式”的概念。设计模式并不是具体的代码或库,而是一种描述在特定编程环境中常见问题的最佳...