java设计模式 java八大设计模式
一、java设计模式推荐哪本书籍
作为一个5年研发经验的Java程序员,我读过的关于设计模式的书籍是《修炼Java开发技术:在架构中体验设计模式和算法之美》。
买了这本书之后,闲置了很长时间,而一番愁苦之后,想了既然花了钱,还是看一看的好。就这样,每天下班看个半个小时,坚持了没多久,就那么默默的放弃了,其中的内容不是我这种刚参加工作的渣渣能看的懂得,越看不懂的东西,越强迫自己去看,真心感觉好累。自己痛苦,书也痛苦,还是去看看从入门到放弃的好。
架构中的设计原则:单一职责原则,里式替换原则(LSP),依赖注入原则(DIP),接口分离原则(ISP),迪米特原则(LOD),开闭原则(OCP)。
23个设计模式:工厂模式,建造模式,工厂方法模式,原始模型模式,单例模式,适配器(变压器)模式,桥梁模式,合成模式,装饰模式,门面模式,享元模式,代理模式,责任链模式,命令模式,解释器模式,迭代子模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式。
每个模式都会一段辛酸泪,那些不懂时的岁月,看了一遍又一遍,读完文字撸代码,还是不懂,耗死了脑细胞,耗掉了黑发。在参加工作近4年之后,读起来容易多了,每了解到一种设计模式,总会有这样真好真方便之感。具备一定研发经验之后,重新开始再阅读这本书,从头到尾,一边思考,一边阅读,一边做笔记,由于只看过一遍,收获很有限,随后有时间时,我将会重新去阅读。虽然只读过一边,已经可以将策略模式和模板方法模式组合使用,完成ICON策略排序的的业务需求,并尝试在其它需求中加以使用。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
二、java学到什么时候开始看设计模式最合适
谢邀!java学到什么时候看设计模式最合适?我的建议是最好能有一定的Java基础后学习,当然这里说的基础指的是已经能简单的小项目,比如说写个学生成绩管理系统(ps:当然不一定需要界面呈现)
设计模式是前人从不断实践中总结出来的一套经验,与语言无关,而是从代码设计的角度上入手,目的是为了使我们的代码更具有可维护性、可读性、可扩展性。
咱们从Java本身语言来说,很多类的设计就充分利用了23种设计模式,这里附上我整理的一张图:
再就从上文说到的成绩管理系统来说,其总共包括以下几个实体:
1、班级:一个老师可以管理多个班级,一个学生只能有一个班级
2、老师:负责将每个学生相应学科的成绩录入到系统中
3、学生:查看自己不同学科的成绩
4、学科:一个班级有多个学科,一个学科有一个老师
那么这里构造一个班级对象,其就充分利用了好几种设计模式:
组合模式:两个属性teachers和students,通过两个add方法来添加Teacher和Student
迭代器模式:通过showStudents方法来获取查看班级下所有学生的迭代器(ps:这里复用了Java#List的迭代器)
建造者模式:StudyClass本身是个建造者模式的实体,通过添加Teacher和Student来形成一个班级
publicclassStudyClass{privatefinalMap<Subject,Teacher>teachers;privatefinalList<Student>students;publicvoidaddTeacher(Subjectsubject,Teacherteacher){teachers.put(subject,teacher);}publicvoidaddStudent(Students){students.add(s);}publicIteratorshowStudents(){}}所以上面的这个例子,你有发现什么吗?其实我们在日常开发中,在不断的应用着设计模式,早日学设计模式,能让我们做到了解到他人写这个代码的设计理念,能知道背后的逻辑,而不是停留在应用的阶段。
另外,同样是写代码,有的人写的代码可读性、可维护性极差,我们经常会看到有人在网上爆料说XX同事写的代码怎么怎么烂;有的人写的代码会让你如浴春风,赏心悦目。
对于Java语言来说,其是一门面向对象设计的语言,而设计模式本身也是基于面向对象设计产生的,这也更具有贴合性。
再一个,如果你想成为开源项目的commiter,那么对于代码质量这块要求就更高了,而设计模式就像一把利剑能帮你斩杀一些烂代码。
总之,更早的接触设计模式,了解其背后的设计理念,会让你的代码质量质的增长。
每天进步一点点!我是90后IT男,日常分享原创或转载的知识!!三、Java中使用了设计模式思想的类有哪些
说起来设计模式,我们每个人都不陌生,多多少少听过「设计模式」的大名。
工作中,我们也一直提及到Java设计模式,那么我们的JDK中又有哪些常见的设计模式呢?
今天我们就来一起说一说。
说起Java设计模式,通俗一点就是前人的经验总结,经由不断演进,形成了一套场景结构设计的一套解决方案。
Java设计模式共有23中涉及模式,总体分为:创建型模式、结构型模式、行为型模式三类。
创建型模式创建型模式的核心思想就是分装隐藏创建对象的逻辑方式,不让客户端直接通过new创建新对象。该分类下包含:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式共5种设计模式。
这里举几个例子:
工厂模式:java.util.Calendar#getInstance()
抽象工厂模式:DocumentBuilderFactory
单例模式:java.lang.Runtime#getRuntime()
建造者模式:StringBuilder
原型模式:Object.clone
结构型模式结构型模式注重类与对象之间的组合,用组合的方式来替代继承。该分类下包含:适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、享元模式、代理模式共8中涉及模式。
这里举典型的例子:
代理模式-java.lang.reflect.Proxy
享元模式:java.lang.Byte#valueOf(byte)
行为型模式
行为型模式关注的是对象之间的通讯交互,共有12中设计模式,责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模版方法模式、访问者模式。
举个栗子:
迭代器模式:java.util.Iterator
观察者模式:java.util.Observer