模式再学习

来源:互联网 发布:汇川plc编程软件1. 编辑:程序博客网 时间:2024/06/11 00:06

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 class 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 模式 (工厂)

 

FacotryAbstract Factory两个模式区别:在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,如上面工厂方法中是创建一个对象Sample,如果我们还有新的产品接口Sample2.

代码片断:

public abstract class Factory{

  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 Sample2A
  }

}

public class BombFactory extends Factory{

  public Sample creator(){
    ......
    return new SampleB
  }

  public Sample2 creator(String name){
    ......
    return new Sample2B
  }

}

 


5.      Singleton模式 (单态)

 

意图:你希望只拥有一个对象

问题:几个用户需要引用同样的对象,确保实例对象只有一个。

解决方案:保证一个实例。

实现:添加一个公共静态方法,如果这个对象的实例为NULL,就对这个类进行实例化,返回对象的实例;否则,保持此对象实例;

可惜--图真的不好贴;不然真的很容易让人理解------------

原创粉丝点击