JAVA设计模式——开篇
设计模式很重要,重要性我就不再复述了。最主要的是,通常我们在写一定量代码后,常用的方法什么的都熟悉后,想再提高代码能力,我找到的最好的方法还是去学习,理解设计模式。不理解设计模式,看一些开源框架和java源码会很难懂。
刚学java时就从各种文章,也听很多人说面向对象编程很重要。但是在编程时虽然会建立类什么的,看起来是面向对象编程。面向对象中的概念也背了一大堆,然而感觉没有真正的理解面向对象编程。因为实际上在开发业务过程中,尤其是简单一些简单的业务,接口,抽象类什么的都用不上。直到开始学习设计模式后,才觉得渐渐理解面向对象编程。这两个是相关的,或者说就是差不多的。。。我也没想到合适形容词,合适的话来表达这两者的关系(手动允悲)。设计模式一开始看的时候,肯定会很枯燥,看了也会很容易忘记。这时一定要结合面向对象的特性和概念去理解,去看那些代码。比如,类,对象,实例化,继承,重写等概念,你熟悉的话,肯定更容易理解设计模式。最好也去了解一下UML的类图,设计模式中经常会用类图来表示类之间的关系。还有一开始如果不怎么理解,千万不要放弃,都是需要一个过程的。我也是每一次看设计模式,都会有一些新的理解。
现在在网上关于设计模式的文章已经很多了,设计模式的系列文章也很多。我还是打算写一下设计模式,一是对自己的理解和学习作一个记录,自己写下来,更能记住和理解。二是,如果其他有人看到,希望能起到一定帮助。虽然我写得不好,可能帮助很小。。。或者我有错误的地方,欢迎大家指出来,喷也不用客气(手动笑哭)。好了,暂时就先这样吧,希望能坚持下来,并保持每周两篇以上的更新。
本系列用到的代码都放在GitHub上面:https://github.com/ShaneJim/BasicJava
一、设计模式的六大设计原则:
1.单一职责原则:一个类一个职责。但“职责”容易划分不清
2.里氏替换原则:使用父类的地方,替换成子类也可以实现
3.依赖倒置原则:高层模块不应该依赖底层模块,应该在两层中间加一层抽象,两者都依赖这个抽象
4.接口隔离原则:一个接口只对一个子模块或业务逻辑进行服务,使用多个专门的接口比使用单一的总接口要好
5.迪米特法则:一个对象应该对其他对象有最少的了解,即一个类应该对自己需要耦合或者调用的类知道得最少
6.开闭原则:一个软件实体,如类、模块和函数应该对外扩展开放,对修改关闭
二、设计模式分为三大类:创建型,结构性,行为型。
(在写每一篇时,发布后,会加在这里加上超链接)
创建型模式是用来创建对象的模式,抽象了实例化的过程。创建对象的同时隐藏创建逻辑,不是使用 new运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
2.工厂方法模式
3.抽象工厂模式
4.建造者模式
5.原型模式
结构型模式讨论的是类和对象的结构,它采用继承机制来组合接口或实现,或者通过组合一些对象实现新的功能。这些结构型模式在某些方面具有很大的相似性,但侧重点却各不相同。
1.代理模式
2.装饰模式
3.适配器模式
4.组合模式
5.桥梁模式
6.外观模式
7.享元模式
行为型模式关注的是对象的行为,用来解决对象之间的联系问题。
1.模版方法模式
2.命令模式
3.责任链模式
4.策略模式
5.迭代器模式
6.中介者模式
7.观察者模式
8.备忘录模式
9.访问者模式
10.状态模式
11.解释器模式
JAVA设计模式——开篇的更多相关文章
- Java设计模式开篇
在所有的设计模式开篇中,总是说一个好的架构,或多或少都会有设计模式的出现.当然或多或少也会使用设计模式的相关原则: SOLID+迪米尔原则 1.优化代码的第一步:单一职责原则 S:单一职责链原则:英文 ...
- 初探Java设计模式1:创建型模式(工厂,单例等)
Java 设计模式 一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混.自认为本文还是写得不错的,花了不少心思来写这文章和做图,力求让读者真的能看着简 ...
- 【java设计模式】-00目录
开篇 [java设计模式]-01设计模式简介 创建型模式: [java设计模式]-02工厂模式(Factory Pattern) [java设计模式]-03抽象工厂模式(Abstract Factor ...
- 12天,这本《重学Java设计模式》PDF书籍下载量9k,新增粉丝1400人,Github上全球推荐榜!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言
- java设计模式- (1)单例模式
参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式. 单例模式(Singleton Pattern)是 Java中最简单的设计模式之一.这种类型的设计 ...
- JAVA 设计模式 桥接模式
用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化. 桥接模式是一种结构式模式. 结构
- java设计模式 策略模式Strategy
本章讲述java设计模式中,策略模式相关的知识点. 1.策略模式定义 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户.策略模式属于对象的 ...
- Java设计模式之行为型模式
行为型模式共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 策略模式:策略模式的决定权在用户,系统本身提供不同 ...
- Java设计模式(三) 抽象工厂模式
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...
随机推荐
- 使用Apache服务部署静态网站
1970年,作为互联网前身的ARPANET(阿帕网)已初具雏形,并开始向非军用部门开放,许多大学和商业部门开始接入.虽然彼时阿帕网的规模(只有4台主机联网运行)还不如现在的局域网成熟,但是它依然为网络 ...
- [编译] 6、开源两个简单且有用的安卓APP命令行开发工具和nRF51822命令行开发工具
星期四, 27. 九月 2018 12:00上午 - BEAUTIFULZZZZ 一.前言 前几天给大家介绍了如何手动搭建安卓APP命令行开发环境和nRF51822命令行开发环境,中秋这几天我把上面篇 ...
- 升讯威微信营销系统开发实践:微信接口的 .NET 封装
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- [Java]LeetCode278. 第一个错误的版本 | First Bad Version
You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...
- [Swift]LeetCode816. 模糊坐标 | Ambiguous Coordinates
We had some 2-dimensional coordinates, like "(1, 3)" or "(2, 0.5)". Then, we re ...
- 5.jQuery
简介 jQuery是一个快速.简洁的JavaScript框架,jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情.它封装JavaScript常用的功能代 ...
- 火狐l浏览器所有版本
最近在群里看到好多人需要火狐浏览器的低版本,而且都是跪求,更有甚者是高额悬赏,因此给大家一个链接,免费的,免费的,免费的!!!重要的事说三遍,拿走不谢~~ 火狐所有版本,了解一下,有需要的自行下载. ...
- 【java设计模式】(6)---迭代器模式(案例解析)
设计模式之迭代器模式 一.java迭代器介绍 1.迭代器接口 在jdk中,与迭代器相关的接口有两个:Iterator 与 Iterable. Iterator:迭代器,Iterator及其子类通常是迭 ...
- vue组件,可以通过npm引用的组件
本文章通过实现一个vue-dialog的弹出层组件,然后附加说明如果发布此包到npm,且能被其他项目使用. 功能说明 多层弹出时,只有一个背景层. 弹出层嵌入内部组件. 弹出层按钮支持回调 源码下载 ...
- java~@Async异步功能
@Async注解,可以实现异步处理的功能,它可以有返回值,或者直接在新线程时并行执行一个任务,对于异步来说,它的执行是有条件的,你需要把异步代码块放在单独的类里,当spring在注入时,才不会相互影响 ...