keer哥的点点滴滴

人生格言 为民族立生命,为万世开太平!——连战

        最近试图系统学习设计模式,以求能够在以后的设计编码过程中让自己的代码更加的易扩展,易维护,易复用。
        设计模式分创建型模式,结构型模式,行为型模式。
        创建型模式:顾名思义,就是在对象创建的时候所采用的模式。一般来说,初学者在需要创建一个object的时候总是使用new方法来实现对象创建,而在设计模式的创建模式这一系列模式中,所有的new动作都是隐式执行的,用户并看不到new动作的执行。
        首先学习一下抽象工厂模式。
        “四人帮”书中说,abstract factory模式的意图是:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。就我的理解,什么叫一系列接口呢,举个例子:开发一套GUI方面的控件,如:button,menu,table等等,然而为了同时能够使这套GUI在不同的os上执行,我们需要对任意一个控件写出两个不同的os版本。windows和unix。于是我们设计如下:

/**
 * @author zhangke
 *
 */
public interface AbstractFactory {

 public Product createProduct();
}

public class Factory1 implements AbstractFactory {
 public Factory1() {
 }

 /* (non-Javadoc)
  * @see design.pattern.abstractfactory.AbstractFactory#createProduct()
  */
 public Product createProduct() {
  return new Product1();
 }

}

public class Factory2 implements AbstractFactory {
 public Factory2() {
  // TODO Auto-generated constructor stub
 }

 /* (non-Javadoc)
  * @see design.pattern.abstractfactory.AbstractFactory#createProduct()
  */
 public Product createProduct() {
  return new Product2();
 }

}

public interface Product {

 public void print();
}

public class Product1 implements Product {
 public Product1() {
 }

 /* (non-Javadoc)
  * @see design.pattern.abstractfactory.Product#print()
  */
 public void print() {
  System.out.println("product1");
 }

}

public class Product2 implements Product {
 public Product2() {
 }

 /* (non-Javadoc)
  * @see design.pattern.abstractfactory.Product#print()
  */
 public void print() {
  System.out.println("product2");
 }

}


客户端代码:
public class Client {
 public Client() {
  // TODO Auto-generated constructor stub
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  AbstractFactory factory = new Factory1();
  factory.createProduct().print();
 }

}
        如上面的代码所示,抽象工厂并不象简单工厂那样,负责不同类型对象的实例化,它将实例化过程放到子类中去实现,也就是在运行时指定,这样的结构带来的好处就是,未来有新的系列产品要加入的时候,只需要按照抽象工厂接口,将新产品实现工厂接口即可引入到程序中来。

posted on 2007-09-18 14:58  珂儿  阅读(185)  评论(1编辑  收藏  举报