不过令人欣慰的是居然升了3级,本身就是一种思

学习的效果很多时候依赖于自身的一个学习“态度”。以自己为例子,我是一个不断追求自我认知的人,因为我渴望对自己人生的“主动性”,我喜欢这种感觉。所以,我需要掌握各种“思维模式”来增加对自我的理性认知,从而提高自己更加“主动”的可能性。带着这样一个心态去学习,我就很容易“入戏”,并不会感到厌倦,而且持续在自己身上学以致用。“设计模式”本身就是一种思维模式,在设计领域它还是我们在相互分享交流的一种共通规范性语言,在我们相互分享理念的时候起了很大的作用,例如在开源的代码上使用这种“共性规范”更容易让大家对这种抽象思维的理解,大大降低了代码之间的沟通成本。

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

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

越高级,越抽象;越抽象,越基础;越基础,越忽视;越忽视,越浮躁......强烈建议自己系统性地结合实践亲自行动看一遍,写一遍,画一遍。

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

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

美高梅棋牌游戏 1设计模式归类

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

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

“创建型”设计模式

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

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

1、单例模式(Singleton)

设计模式分类
创建型:
  单例:保证一个类只有一个实例,其中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中枚举(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

美高梅棋牌游戏 2“单例模式”UML类图

结构型:
       适配器:将一个类的接口转换成用户希望的另一个接口
  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.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  设计模式写到这里算告一段落啦,虽然我看过几遍,并且参考这种博客书籍写下了这些篇内容,但是问自己这些模式就真的懂啦嘛,我可以肯定的说不是的,像其中解释器访问者都是什么鬼,我依然很难解释清楚,还是用的少,或者都是封装完整的,很少需要自己去封装这么多的模式,这种思想的种子算埋下啦,至于开不开花真的靠悟性啦,我至今还未开悟...

行为型:
  责任链:实施一系列的操作,并且使调用双方和操作之间有耦合关系
  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  设计模式写到这里算告一段落啦,虽然我看过几遍,并且参考这种博客书籍写下了这些篇内容,但是问自己这些模式就真的懂啦嘛,我可以肯定的说不是的,像其中解释器访问者都是什么鬼,我依然很难解释清楚,还是用的少,或者都是封装完整的,很少需要自己去封装这么多的模式,这种思想的种子算埋下啦,至于开不开花真的靠悟性啦,我至今还未开悟...

● java.lang.Runtime#getRuntime()

系列博文参考博客及书籍在此一并列出:
博客:
书:研磨设计模式
博客:
博客:
等等...

系列博文参考博客及书籍在此一并列出:
博客:
书:研磨设计模式
博客:
博客:
等等...

2、构建模式

美高梅棋牌游戏 3“构建模式”UML类图

主要用来简化一个复杂的对象的创建。

● java.lang.StringBuilder#append()

● java.lang.StringBuffer#append()

● java.sql.PreparedStatement

3、原型模式(Prototype)

美高梅棋牌游戏 4“原型模式”UML类图

当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。

● java.lang.Object#clone()

● java.lang.Cloneable

4、抽象工厂模式(Abstract Factory)

美高梅棋牌游戏 5“抽象工厂模式”UML类图

提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

● java.util.Calendar#getInstance()

● java.sql.DriverManager#getConnection()

● java.sql.Connection#createStatement()

● java.text.NumberFormat#getInstance()

5、工厂方法模式(Factory Method)

美高梅棋牌游戏 6“工厂方法模式”UML类图

定义了一个创建对象接口,但由子类决定实例化的类是哪一个,工厂方法让类把实例化推迟到子类。

● java.lang.Proxy#newProxyInstance()

● java.lang.reflect.Array#newInstance()

● java.lang.reflect.Constructor#newInstance()

● java.lang.Class#forName()

“行为型”设计模式

1、策略模式

美高梅棋牌游戏 7“策略模式”UML类图

定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

● java.util.Comparator#compare()

● javax.servlet.http.HttpServlet

● javax.servlet.Filter#doFilter()

2、状态模式

美高梅棋牌游戏 8“状态模式”UML类图

允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

本文由美高梅游戏网站登录发布于美高梅棋牌游戏,转载请注明出处:不过令人欣慰的是居然升了3级,本身就是一种思

您可能还会对下面的文章感兴趣: