(一)基本模式
1.接口模式(Interface)。使用接口模式,由不同的服务提供者类所提供的共同服务就可以被抽象出来,并申明为一个独立的接口,提供服务的每个类都可以被设计为这个共同的接口的一个实现者。
2.抽象父类(Abstract Parent class)。用于设计一个框架,对一组相关的类的共有功能提供一致性的实现。
不论何时,只要有可能,表示相同行为的方法都应该声明为一个接口的形式,并使用不同的实现类对其进行实现,但使用接口会有限制,就是它不能提供方法的实现。这意味着一个接口的每一个实现类都需要显示地实现接口中生命的所有方法,即使有些时候这些方法代表着不变的功能部分,并且在所有的实现类中豆油完全相同的实现,这将导致冗余。在这种情况下可以使用抽象父类模式来清除冗余的方法实现。
3.私有方法(Accessor Methods[存取器方法])。提供一种使用特定方法函数访问一个对象的状态的方法,这种方法阻止不同的客户对象对对象属性的直接访问,因此将带来一个更具可维护性的类结构。
这种模式将对象属性都被声明为私有,并提供遵循某种命令习惯要求的公有的存取器方法来访问对象的属性。
4.常数数据管理器(Constant Data Manager)。适用于设计一个有效的存储机制,以便对应用中的不同对象都会使用到的常量进行管理,通常,应用访问对象访问到不同种类的常量数据包括:数据文件名,按钮标签,取值范围的最大值和最小值,错误码以及错误信息等。
对于应用中取值恒定不变的那些数据,应该将其存放在一个单独的对象中,提供应用中其他对象访问而不应该允许它们出现在不同的对象中。这种类型的分离能够为应用中的常量数据提供一个易于维护的集中式仓库。
5.不变对象(Immutable Object)。一个类被设计为,它的实例仅仅作为相关数据的携带着而不具行为。不变对象模式的使用可以保证多个客户对象对数据对象的同时访问,不会引起访问对象数据的不同方法间的同步带来的费用。
可以将所有实例属性值都在构造方法中设定,不提供其他任何可以改变对象属性的方法。且所有成员都声明为final型。利用getAttr()方法返回属性。
6.监视器(Monitor)。它通过在这样的对象上获取一个锁以保证在任意一个时刻只有一个线程被允许执行该对象的任何方法。不同于让客户对象来负责的方法,服务提供者对象本身就可以被设计为同步访问负责的形式以保证不会有的两个线程,可以同时执行它的方法,通过在对象方法的声明中使用synchronized关键字来 使用管程。