基本模式:
1. 接口模式:当多个类提供近似的服务的时候,通过接口模式,不同的服务提供者类所提供的共同的服务就可以被抽象出来,并被声明为一个独立的接口。这样客户对象就能以一种无缝的方式来使用不同的服务提供类,而无需进行任何改动。
2. 抽象类模式:可以用于设计一个能够为一组相关类的公共功能提供一致的实现的框架。与接口不同的是,接口中的方法都必须在子类中实现。而抽象类中就可以实现必须的方法,子类只需继承,这样就减少了冗余的方法实现。
3. 私有方法模式:一些方法只能被别的方法或同一个对象中的内部类在内部使用,该模式建议将这种方法设计成为私有方法。
4. 存取器模式:对象中,所有的实例变量都被声明为私有的,并提供公有的存取器方法来访问对象的公有状态;客户可以通过使用存取器将一个对象从一个状态改为另一个状态;对象可以直接访问它的私有变量。JSP中的javaBean就是用了这种模式。
5. 常量数据管理器:非常适用于设计一个有效的存储机制,以便对应用中的不同对象都会使用到的常量数据进行管理。该模式建议,对于应用中取值恒久不变的那些数据,应该将它们存放在一个单独的对象中供应用中的其他对象访问,而不应该允许他们出现在不同的对象中。这种类型的分离能够为应用中的常量数据提供一个易于维护的集中式仓库。
6. 不变对象:把所有的实例变量都在构造方法中设定,不提供任何其他可以改变对象状态的方法;将类声明为fanal型,防止存在通过重写类方法来改变状态的可能性;所有实例变量都被写成fanal型,这样它就只能通过构造方法被赋值;如果实例变量中的任何一个包含指向一个对象的引用,那么对应的get方法inggai返回该对象的一个拷贝,而不是真是的对象本身。以上的机制可以保证线程安全,并自动消除了与并发访问有关的所有问题。
7. 管程:它通过在一个这样的对象上获取一个锁以保证在任意一个时刻只有一个线程被允许执行该对象的任何方法。在Java中可以通过在对象方法的声明中使用synchronized关键字来做到这一点。
创建模式:
作用:处理OO应用中最常执行的任务之一--创建对象;支持使用一致,简单的受约束机制创建对象;允许封装有关实例哪些类以及如何创建实例等详细信息;支持使用接口,以减少耦合的产生。
1. 工厂方法:如果客户机对象不知道要实例哪个类,它可以利用工厂方法,为类层次结构或相关类组中的相应类创建实例。工厂方法可能是作为客户机本身的一部分设计的,也可能是在个别类中设计的。其中,包含工厂方法或任意其子类的类决定了要选择的类以及如何实例该类。
2. 单例:提供了一种受约束的对象创建机制,确保指定类只有一个实例。
3. 抽象工厂:允许为一组相关类中的类创建实例,而不必让客户机对象指定要实例的实际具体类。
4. 原型:提供了一种简单的对象创建方式,即从现有的对象中复制对象。
5. 生成器:允许创建复杂的对象,可以只提供对象的类型和内容信息,并且使有关对象创建的详细信息对客户机保持透明。这种方式允许相同的构造过程生成不同的对象表示。