1. Façade 模式 (外观)
意图: 希望简化现有系统的使用方法。需要定义自己的接口。
问题: 只需要使用一个复杂系统的一个子集。
解决方案: Façade向用户展现使用现有系统的一个新的接口。
实现: 定义一个新的类来提供所需的接口。
让新的类使用现有系统。
适用情况:1、不需要使用一个复杂系统的所用功能,并且可以创建一个新的
类来访问原有系统的功能。
2、希望包装或者隐藏原有系统。
3、希望使用原有系统的功能,并且希望增加一些新的功能。
4、编写一个新类的代价小于让所有人都学会使用原有系统。
2. Adapter 模式 (适配器)
意图:将一个无法控制的现有对象与一个特定接口相匹配。
问题:一个系统拥有正确的数据和行为,但接口确实不匹配的。
解决方案:Adapter模式用我们需要的接口对无法修改的类进行包装。
实现:将现存的类包含在另一个类中。包容类与需要的接口相匹配,并调用
被包容的类的方法。
代码片断:实现Adapter模式
Class Circle extends Shape {
private XXCircle pxc;
public Circle() {
pxc=new XXCircle();
}
void public display () {
pxc.displayIt ();
}
}
3. Factory 模式 (工厂)
意图:为系统结构提供了非常灵活强大的动态扩展机制。
问题:根据具体的情况得到需要的实例化对象。
解决方案:Factory 模式专门建立了一个生产实例的工厂。
实现: 定义一个工厂类;在类中定义一个生产不同实例的静态方法。
根据具体的参数生产出不同的实例。
代码片断:
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
4. Abstract Factory 模式 (工厂)
Facotry与Abstract Factory两个模式区别:在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,如上面工厂方法中是创建一个对象Sample,如果我们还有新的产品接口Sample2.
代码片断:
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory{
public Sample creator(){
.........
return new SampleA
}
public Sample2 creator(String name){
.........
return new Sample
2A
}
}
public class BombFactory extends Factory{
public Sample creator(){
......
return new SampleB
}
public Sample2 creator(String name){
......
return new Sample2B
}
}
5. Singleton模式 (单态)
意图:你希望只拥有一个对象
问题:几个用户需要引用同样的对象,确保实例对象只有一个。
解决方案:保证一个实例。
实现:添加一个公共静态方法,如果这个对象的实例为NULL,就对这个类进行实例化,返回对象的实例;否则,保持此对象实例;
可惜--图真的不好贴;不然真的很容易让人理解------------