Java与模式

Java与模式

本人接下来要学习Java与模式一书(阎宏编著)在学习过程中记下自己学习的一些心得和体会,希望和大家一起学习共同探讨与讨论。

呵呵,这句话挺有味道的,和大家一起分享下:

在西方的思想里面,分析一个结构直到把它分解为不可分割的单位,再加以数量化的研究和描述,是其典型的数理分析的套路。在西方科学文化中,不能够精确化和数量化的结构不受重视。而在中国传统的文化里面,不能够精确化和数量化并不是研究的障碍,中国的阴阳思想可以灵活地描述任何的自然物、人造物和人类思想。

我感觉这句话道出了西方思维与东方思维的差别。

在这本书里,作者凭借深厚的自然科学和中国传统哲学的功底,以及多年来对模式理论的研究,讲解软件设计模式的理论,它的简要历史,以及它与中国道家文化的渊源。

这本书分为三大部分:

第一部分(UML和模式介绍)

这一部分包括两个内容:模式理论背景的介绍和UML的简介,“模式的简史和形而上学”一章简单地讨论了模式理论的背景、它与中国道家思想的渊源关系,以及模式理论的基础概念。“统一建模语言UML简介”一章简单地介绍了UML的背景、基本概念,以及后面将要用到的几种UML图。

第二部分(面向对象的设计原则)

如何同时提高一个软件系统的可维护性(Maintainablity)和可复用性(Reuseability)是面向对象设计要解决的核心问题。在我们经过一段时间的对设计模式的学习和使用之后,就会觉得这些孤立的设计模式背后应当由一些更为深层的,更具有普遍性的、共同的思想原则。也就是设计原则是普遍性的原则,而设计模式则是设计原则在具体问题中体现。

有一个问题可能大家有点不是很清楚,我把它抽出来,说下,什么是系统的复用:

传统的复用 代码的剪贴复用,算法的复用,数据结构的复用。

面向对象设计的复用:数据的抽象化和继承关系使得概念和定义可以复用,多态性使得实现和应用可以复用。而抽象化和封装可以保持和促进系统的可维护性。这样一来,复用的焦点不再集中在函数和算法的等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。换言之,复用的焦点发生了倒转。发生复用焦点的倒转并不是因为实现细节的复用不再重要,而是因为这些细节上的复用往往已经做得很好,而且抽象层次是比这些细节更值得强调的复用焦点,因为它们是在提高复用的同时保持和提高可维护性的关键。因此在面向对象的设计里面,可维护性的复用是设计原则和设计模式的基础。

恰当的提供系统的可复用性,可以提高系统的可扩展性。允许一个具有同样接口的新的类代替旧的类,是对抽象接口的复用,客户端依赖于一个抽象的接口,而不是一个具体的实现类,使得这个具体类可以被另一个具体的类取代,而不影响客户端。
那么有哪些常用的设计原则呢?

“开-闭“原则(Open-Closed Principle,或者OCP)

里氏代换原则(Liskov Substitution Principle,或者LSP)

依赖倒转原则(Dependency Inversion Principle,或者DIP)

接口隔离原则(Interface Segregation Principle,或者ISP)

组合/聚合复用原则(Composition/Aggregation Principle,或者CARP)

迪米特法则(Law of Demeter,或者LoD)

最有以老子的一句“天下有道,却走马以粪,天下无道,戎马生于效”

来暂为本部分的概括画上一个逗号,下面再详细介绍这几种设计原则。

第三部分(常用设计模式)

本书中把设计模式大致分为三类:

   创建模式Creational Pattern,是对类的实例化过程的抽象化。一些系统在创建对象时,需要动态地决定怎样创建对象,创建那些对象,以及如何组合和表示这些对象。创建模式描述了怎样构造封装这些动态的决定。

创建模式分为类的创建模式和对象的创建模式两种。

   类的创建模式  类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到那些具体类的信息,并且隐藏了这些类的实例是如何被创建和放在一起的。

   对象的创建模式  而对象的创建模式则把对象的创建过程动态地委派给另一个对象,从而动态地决定客户端将得到那些具体类的实例,以及这些类的实例是如何被创建和组织在一起的。

常见的创建模式:简单工厂模式工厂方法模式抽象工厂模式单例模式多例模式建造模式原始模型模式

   结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,结构模式描述两种不同的东西:类与类的实例,根据这一不同,结构模式可以分为类的结构模式和对象的结构模式两种。

   类的结构模式   类的结构模式使用继承来把类、接口等组合在一起,以形成更大的结构,当一个类从父类继承并实现某接口时,这个新的类就把父类的结构和接口的结构结合在起来。类的结构模式是静态的。一个类的结构模式典型的例子,就是类形式的适配器模式。

  对象的结构模式  对象的结构模式描述怎样把各种不同类型的对象组织在一起,以实现新的功能的方法。对象的结构模式是动态的。

一个典型的对象的结构模式就是代理人模式。

常用的结构模式包括:适配器模式缺省适配器模式合成模式装饰模式代理模式亨元模式门面模式桥梁模式等。

   行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是于它们之间的相互作用的。行为模式分为类的行为模式和对象的行为模式。

          类的行为模式  类的行为模式使用继承关系在几个类之间分配行为。

          对象的行为模式  对象的行为模式则使用对象的聚合来分配行为。

常用的行为模式:不变模式策略模式模板方法模式观察者模式迭代子模式责任链模式命令模式备忘录模式状态模式访问者模式解释器模式调停者模式等

 

你可能感兴趣的:(java,设计模式,数据结构,算法,UML,interface)