您所在的位置:主页 > JAVA技术 >

java常用设计模式

时间:2014-07-11 17:05来源:未知 作者:疯狂java 点击:

 

  1.工厂设计模式.

  有三种:简单工厂(Simple Factory)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)

  简单工厂:

  1.同类产品抽象出接口IProduct,具体的产品实现这个接口

  2.定义类Factory,提供可以得到具体产品的静态方法getProduct

  要得到具体产品时,就直接调用Factory.getProduct来得到. 如有同类的多种商品,可以在getProduct方法中设置参数,或定义多个getProduct方法:getProductA()getProductB()getProductC()

  工厂方法:

  1.产品抽象出接口IProduct,具体的产品实现这些接口

  2.定义工厂接口IFactory,定义不同具体工厂FactoryA,FactoryB…等,不同的工厂提供不同的产品,这些具体工厂不使用静态方法提供.

  要得到具体产品,先得到具体工厂(new),根据某工厂得到某产品.

  抽象工厂:

  1.产品抽象出接口IProduct,不同系列的子产品抽象出接口IProductA,IProductB等,具体的产品实现这些接口

  2.定义工厂接口IFactory,定义不同具体工厂Factory1,Factory2…等,不同的工厂提供不同系列的产品,这些具体工厂不使用静态方法提供.

  例如

  产品接口: 车门 轮胎 零件

  产品具体实现: 宝马车门 大众车门 宝马轮胎 大众轮胎 宝马零件 大众零件

  工厂: 车间

  具体工厂:宝马车间(提供宝马相关产品) 大众车间(提供大众相关产品)

  2.单例设计模式:

  目的是保证某类的对象在内存当中唯一,有饿汉式和懒汉式两种:

  饿汉式: 加载时就初始化

  class Singleton{

  private Singleton(){}

  private static Singleton instance = new Singleton();

  public static Singleton getInstance() { return instance; }

  }

  懒汉式: 用到时再创建实例

  class Singleton{

  private Singleton(){}

  private static Singleton instance;

  public static Singleton getInstance() {

  if (instance == null)

  synchronized (Singleton.class) {

  if (instance == null) instance = new Singleton();

  }

  return instance;

  }

  }

  3.原型模式(Prototype):

  在java中就是克隆(clone),通过克隆原型来获取新的对象.

  类实现Cloneable接口,重写clone方法

  4.建造者模式:

  1.提供用于提供产品的组成部分的类,例如:生产车间Builder:(提供各种方法生产:车门 轮胎 零件等)

  2.提供如何组装产品的类,例如: 组装车间Director (提供方法:组装construct)

  要得到产品,先有了生产车间,组装车间通过调用生产车间的各个方法生产需要的part并组装,提供产品.

  Director director= new Director();Product product = director.construct(new Builder());