MyException - 我的异常网
当前位置:我的异常网» 设计模式 » 设计模式之小结篇

设计模式之小结篇

www.MyException.Cn  网友分享于:2013-11-16  浏览:0次
设计模式之总结篇

      十一宅了,也没学习看啥书,所有时间花在了围棋上,虽然很颓废,不过令人欣慰的是居然升了3级,现在是6k水平,
之前晚上下的多,停在9k挺长时间的,居然在10.1突破了,这么看来我能升段的目标还是可能实现的,这么看自信还真是挺重要的,而我一直不算个自信的人,
本来打算10.1假期完成这个设计模式总结的,但是懒癌爆发,就拖到今天啦。

设计模式的6大原则
这也是个老生常谈的问题,我也不免俗
1.单一职责原则
       一个类只承担一个职责
2.开放-封闭原则
       对扩展开放,对修改关闭,即尽量以扩展的方式来维护系统
3.里氏替换原则
      表示我们可以在代码中使用任意子类来替代父类并且程序不受影响,这样可以保证我们使用“继承”并没有破坏父类
4.接口隔离原则
       客户端不应该依赖于它不需要的接口,两个类之间的依赖应该建立在最小接口的基础上。这条原则的目的是为了让那些使用相同接口的类只需要实现特定必要的一组方法,而不是大量没用的方法专而小的接口,而不是总接口

5.依赖倒置原则
      抽象不依赖于细节,而细节应该依赖于抽象。提倡“面向接口”编程,而非“面向实现”编程

6.迪米特法则
      用设计行话就是“高内聚,低耦合”,减少类之间的相互依赖,修改系统的某一部分的时候,不会影响到其他部分,使系统有更好的维护性

设计模式分类
创建型:
  单例:保证一个类只有一个实例,其中jdk中枚举(Enum)类是单例。
       简单工厂:静态工厂方法,根据传递参数的不同,返回不同的实例。
       工厂方法:定义创建对象的接口,让子类去决定具体使用哪个类。
  Collection.iterator()
  java.lang.Proxy#newProxyInstance()
  java.lang.Object#toString()
  java.lang.Class#newInstance()
  java.lang.reflect.Array#newInstance()
  java.lang.reflect.Constructor#newInstance()
  java.lang.Boolean#valueOf(String)
  java.lang.Class#forName()
       抽象工厂:提供一个创建一系列相关的对象的接口,而无须指定它的具体实现类
  jdk中 java.sql.*
       原型:用原型实例指定创建对象的种类,并通过复制原型实例得到对象
  jdk中 java.lang.Object#clone(),java.lang.Cloneable
       建造者:简化复杂对象的创建,将复杂对象的构造与表示相分离,使得同样的构造过程可以产生不同的复杂对象
       jdk中 java.sql.PreparedStatement


结构型:
       适配器:将一个类的接口转换成用户希望的另一个接口
  jdk中 java.io.OutputStreamWriter(OutputStream),java.util.Arrays#asList()
  桥接:将抽象部分与实现部分分离,从而使得它们可以独立变化,使各部分组件化
  jdk中的JDBC
  组合:将对象组装成树状结构以表示“部分-整体”的关系
  java.util.Map#putAll(Map),java.util.List#addAll(Collection)
  装饰:动态的为对象添加额外职责
  jdk中IO包
  外观:为系统的一组接口提供一个一致的界面,使外观一致
  jdk中java.lang.Class
  享元:它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件
  jdk中 java.lang.Integer#valueOf(int)
  java.lang.Boolean#valueOf(boolean)
  java.lang.Byte#valueOf(byte)
  java.lang.Character#valueOf(char)
  代理:为其他对象提供一种代理以控制对该对象的访问
  jdk中 java.lang.reflect.Proxy
  java.rmi.*

行为型:
  责任链:实施一系列的操作,并且使调用双方和操作之间有耦合关系
  jdk中 java.util.logging.Logger#log()
  javax.servlet.Filter#doFilter()
  命令:对一个客户端请求封装成抽象对象
  jdk中 java.lang.Runnable
  javax.swing.Action
  解释器:一种按照规定语法进行解析的方案
  jdk中 java.util.Pattern
  java.text.Format
  迭代器:顺序访问集合中的所有元素
  jdk中 java.util.Iterator
  中介:用一个中介者对象封装一系列的对象交互
  jdk中 java.lang.reflect.Method#invoke()
  备忘:备份或者恢复复杂对象的状态
  jdk中 java.io.Serializable
  观察者:当一个对象发生改变时,所有和它有依赖关系的对象都会得到通知
  jdk中 java.util.Observer/java.util.Observable
  java.util.EventListener
  状态:类的行为是基于它的状态改变
  jdk中 java.util.Iterator
  策略:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换
  jdk中java.util.Comparator#compare()
  模板:定义一个操作流程的方法骨架,具体细节的实现放到子类中
  jdk中java.io.InputStream, java.io.OutputStream, java.io.Reader和java.io.Writer的所有非抽象方法
  java.util.AbstractList, java.util.AbstractSet和java.util.AbstractMap的所有非抽象方法
  javax.servlet.http.HttpServlet#doXXX()
  java.util.Collections#sort()
  访问者:作用于某个对象群中各个对象的操作. 它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作
  jdk中javax.lang.model.element.Element 和javax.lang.model.element.ElementVisitor  设计模式写到这里算告一段落啦,虽然我看过几遍,并且参考这种博客书籍写下了这些篇内容,但是问自己这些模式就真的懂啦嘛,我可以肯定的说不是的,像其中解释器访问者都是什么鬼,我依然很难解释清楚,还是用的少,或者都是封装完整的,很少需要自己去封装这么多的模式,这种思想的种子算埋下啦,至于开不开花真的靠悟性啦,我至今还未开悟...


系列博文参考博客及书籍在此一并列出:
博客:http://blog.csdn.net/lovelion/article/details/17517213
书:研磨设计模式
博客:http://www.cnblogs.com/zuoxiaolong/category/509144.html
博客:http://www.iteye.com/news/18725
等等...

文章评论

旅行,写作,编程
旅行,写作,编程
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员应该关注的一些事儿
程序员应该关注的一些事儿
Java程序员必看电影
Java程序员必看电影
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
 程序员的样子
程序员的样子
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
为什么程序员都是夜猫子
为什么程序员都是夜猫子
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
老程序员的下场
老程序员的下场
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
总结2014中国互联网十大段子
总结2014中国互联网十大段子
代码女神横空出世
代码女神横空出世
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
编程语言是女人
编程语言是女人
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
10个调试和排错的小建议
10个调试和排错的小建议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员的鄙视链
程序员的鄙视链
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
中美印日四国程序员比较
中美印日四国程序员比较
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
一个程序员的时间管理
一个程序员的时间管理
程序员必看的十大电影
程序员必看的十大电影
鲜为人知的编程真相
鲜为人知的编程真相
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员和编码员之间的区别
程序员和编码员之间的区别
漫画:程序员的工作
漫画:程序员的工作
那些争议最大的编程观点
那些争议最大的编程观点
如何成为一名黑客
如何成为一名黑客
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
我是如何打败拖延症的
我是如何打败拖延症的
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有