java设计模式0--设计模式简介
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式的起源
软件领域的设计模式起源于建筑学。
1977年,建筑大师Alexander出版了《A Pattern Language:Towns, Building, Construction》一书。受Alexander著作的影响 ,Kent Beck和Ward Cunningham在1987年举行的一次面向对象的会议上发表了论文:《在面向对象编程中使用模式》。
设计模式的分类
1.创建型模式
社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有5个具体的创建型模式可供研究,它们分别是:
工厂方法模式(Factory Method)
抽象工厂模式(Abstract Factory)
创建者模式(Builder)
原型模式(Prototype)
单例模式(Singleton)
2.结构型模式
在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:
外观模式(Facade)
适配器模式(Adapter)
代理模式(Proxy)
装饰模式(Decorator)
桥模式(Bridge)
组合模式(Composite)
享元模式(Flyweight)
3.行为型模式
在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高,这里有11个具体的行为型模式可供研究,它们分别是:
模板方法模式(Template Method)
观察者模式(Observer)
状态模式(State)
策略模式(Strategy)
职责链模式(Chain of Responsibility)
命令模式(Command)
访问者模式(Visitor)
调停者模式(Mediator)
备忘录模式(Memento)
迭代器模式(Iterator)
解释器模式(Interpreter)
GOF的著作
目前,被公认在设计模式领域最具影响力的著作是Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides在1994年合作出版的著作:《Design Patterns:Elements of Reusable Object-Oriented Software》(中译本《设计模式:可复用的面向对象软件的基本原理》 或《设计模式》),该书被广大喜爱者昵称为GOF(Gang of Four)之书,被认为是学习设计模式的必读著作,GOF之书已经被公认为是设计模式领域的奠基之作。
面向对象的几个基本原则
1.面向抽象原则
设计一个类时,不让该类面向具体的类,而是面向抽象类或接口 。
举个例子:定义底面为三角形的柱体
2.开-闭原则
设计应当对扩展开放,对修改关闭。
如果您的设计遵守了“开-闭原则”,那么这个设计一定是易维护的,因为在设计中增加新的模块时,不必去修改设计中的核心模块。
3.高内聚-低耦合原则
如果类中的方法是一组相关的行为,则称该类是高内聚的,反之称为低内聚的。
所谓低耦合就是尽量不要让一个类含有太多的其它类的实例的引用,以避免修改系统的其中一部分会影响到其它部分。
学习设计模式不仅可以使我们使用好这些成功的模式,更重要的是可以使我们更加深刻地理解面向对象的设计思想,非常有利于我们更好地使用面向对象语言解决设计中的问题。
合理使用模式
1.正确使用; 2.避免教条; 3.模式挖掘
from: http://www.cnblogs.com/wuyudong/
java设计模式0--设计模式简介相关推荐
- 北邮java作业代码_北邮 java 作业7 设计模式2,李颉老师的课上作业设计模式2
[实例简介] 北邮 java 作业7 设计模式2,李颉老师的课上作业设计模式2 [实例截图] [核心代码] 67506242buptjavahomework ├── _14211133_孙杨_7_Ad ...
- 从Java类库看设计模式
//From http://www.uml.org.cn/j2ee/201010214.asp 很多时候,对于一个设计来说(软件上的,建筑上的,或者它他工业上的),经验是至关重要的.好的经验给我们以指 ...
- java 常用十种设计模式示例归纳 | 已打包请带走
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. GitHub地址 DesignPattern 文章说明 一个Demo,集合常用的十种设计模 ...
- 深入浅出设计模式之设计模式简介
一.什么是设计模式(详见设计模式概念和七大原则) 在GoF(Gang of Four)的书籍<Design Patterns - Elements of Reusable Object-Orie ...
- java设计模式并发_[高并发Java 七] 并发设计模式
[高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...
- 3种设计模式的java小程序,java实现的设计模式小程序 模拟Web系统
[实例简介] java实现的设计模式小程序,应用了策略模式,单例模式,工厂模式,抽象工厂模式,责任链模式.模拟的是Web系统针对不同用户提供不同的功能,可以在此基础上添加自己的代码. [实例截图] [ ...
- Java进阶篇设计模式之一 ----- 单例模式
前言 在刚学编程没多久就听说过设计模式的大名,不过由于当时还是个彻彻底底的菜鸟,并没有去触碰.直到在开始工作中对简单的业务代码较为熟悉之后,才正式的接触设计模式.当时最早接触的设计模式是工厂模式,不过 ...
- Java基础篇--设计模式
目录 前言 设计模式 创建型模式 单例模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 亨元模式 代理模式 行为型模式: 访问者模 ...
- java面试常见设计模式
java面试常见设计模式 看这里,动画描述很好 创建型模式 工厂方法模式 目的 结构 场景 优缺点 示例代码 button factory Demo.java: 客户端代码 抽象工厂模式 目的 结构 ...
- 【Java SE】设计模式
设计模式的7大原则 1.单一职责原则 SRP 2.里氏替换原则 LSP 3.依赖倒转原则 DIP 4.开闭原则 OCP 5.接口隔离法则 ISL 6.合成复合原则 CRP (CARP) 7.迪米特法则 ...
最新文章
- Oracle day05 索引_数据去重
- 网络最大流的三种基础算法
- Dimple.js基础
- c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
- 数据库设计(三)概念数据模型
- java 断点续传 开源_java断点续传原理
- 剑指 Offer 10- I. 斐波那契数列 (从重叠子问题到备忘录到dp数组迭代解法)
- LeetCode 1292. 元素和小于等于阈值的正方形的最大边长(DP)
- 奇怪的电梯(信息学奥赛一本通-T1360)
- ActiveReports 报表应用教程 (15)---报表换肤
- h5自定义相机界面_有没有什么比较好用的H5小程序?
- java处理excel-xlsx格式大文件的解决方案
- python气象卫星云图解析_零基础python效率提升资源汇总
- psvimg格式PSV存档文件解包工具psvimgtools在macOS环境下的使用教程
- Hadoop1.0,2.0,3.0区别
- 一张图说明白数据安全管理体系的规划
- 头条极速版问答自动化教程
- android检测蜂窝网络,Android 判断网络状态及开启网路
- CSS单位px、em、rem及它们之间的换算关系
- 川土微电子CA-IS1300用于电流检测的隔离运放新品上市
热门文章
- SpringBoot - 优雅的实现【参数校验】高级进阶
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)
- Android Application 之 allowBackup 属性浅析
- 微服务如何解决分布式事务
- mac 下homebrew 的安装和卸载
- spring注解@service(service)括号中的service有什么用?
- 如何删除tmp计算机桌面,Win10系统中tmp文件删除不了应该如何解决?
- vue中 .sync 修饰符 个人理解
- 微信小程序之页面打开数量限制
- Matlab绘制不同阻尼下的系统响应