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/ 抽象工厂模式解决的问题 上文<工厂 ...
随机推荐
- UEditor之实现配置简单的图片上传示例
UEditor之实现配置简单的图片上传示例 原创 2016年06月11日 18:27:31 开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过 ...
- Mesos源码分析(11): Mesos-Master接收到launchTasks消息
根据Mesos源码分析(6): Mesos Master的初始化中的代码分析,当Mesos-Master接收到launchTask消息的时候,会调用Master::launchTasks函数. v ...
- CentOS 7 安装配置 OpenVPN 客户端
安装 epel yum 源: $ rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm $ ...
- Tomcat线程池配置
简介 线程池作为提高程序处理数据能力的一种方案,应用非常广泛.大量的服务器都或多或少的使用到了线程池技术,不管是用Java还是C++实现,线程池都有如下的特点:线程池一般有三个重要参数: 最大线程数 ...
- Lock、ReentrantLock、ReentrantReadWriteLock区别
Lock Lock相比于synchronized具有更强大的功能,在jdk1.6之前,锁竞争激烈的情况下使用lock的实现类ReentrantLock甚至比synchronized具有更好的性能,1. ...
- CentOS Ubantu linux中实用系统相关常用命令
系统信息相关命令 本节内容主要是为了方便通过远程终端维护服务器时,查看服务器上当前 系统日期和时间 / 磁盘空间占用情况 / 程序执行情况 本小结学习的终端命令基本都是查询命令,通过这些命令对系统资源 ...
- .NET Core 2.0迁移技巧之web.config配置文件
大家都知道.NET Core现在不再支持原来的web.config配置文件了,取而代之的是json或xml配置文件.官方推荐的项目配置方式是使用appsettings.json配置文件,这对现有一些重 ...
- Docker基础命令和时区问题
Docker 命令 1. 安装Docker # ubuntu系统安装 $ sudo apt install docker-ce # 启动docker $ sudo systemctl start do ...
- Lunix服务器上项目迁移命令
scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下. scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP ...
- Java IO 导入导出TXT文件
字节流和字符流 区别: 读写单位:顾名思义,字节流以字节(byte)为读写单位,而字符流以字符为读写单位,根据码表映射字符,一次可能读入多个字符. 处理对象:字节流可以处理所有类型的数据(包括图片等) ...