1. 概述

  定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的创建延迟到其子类。

2. 解决问题

  工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择的问题还是存在的,只是工厂方法模式将简单工厂方法模式工厂类中的判断转移到客户端,然子类来决定。

3. 

  1.抽象产品类:提供必要的方法和属性的类,让子类来实现相应的方法。

  2.抽象工厂 :创建产品的抽象类或接口,提供创建具体工厂的方法。

  3.具体产品:继承抽象产品类,实现自己相应的方法。

  4.具体工厂:实现抽象工厂,创建相应的具体产品。

4. 结构图

      

5.结构中的代码:

  

       抽象产品类:

  

public class AbstracProduct {
    
    public void sell(){};

}

  具体产品类

   

public class ProductA extends AbstracProduct {
    
    public void sell() {
        super.sell();
    }

}
public class ProductB extends AbstracProduct {
    
    public void sell() {
        super.sell();
    }
}

抽象工厂

public interface AbstractFactory {
    
    public  AbstracProduct getProduct();

}


具体工厂类

public class ProductAFactory implements AbstractFactory {

    public AbstracProduct getProduct() {
        return new ProductA();
    }

}

public class ProductBFactory implements AbstractFactory {

    public AbstracProduct getProduct() {
        return new ProductB();
    }

}

客户端:

public class Client {
    
    public static void main(String [] args){
        AbstractFactory  factory  = new ProductBFactory();
        AbstracProduct product = factory.getProduct();
        product.sell();
    }

}

在客户端,根据特定的需求实例化相应的产品类。

 

  

  

posted on 2014-11-02 17:11  javaliwei  阅读(38)  评论(0)    收藏  举报