Java的工厂模式(三)

  除了一般的工厂模式之外,还有抽象工厂模式,抽象工厂模式更强调产品族的概念,一个具体工厂生产出来的系列商品都是一个产品族的。

  假设我们有两个具体工厂,分别是袋装水果工厂和罐装水果工厂,它们都能生产苹果和香蕉,这样生产出来的水果就会有四种,其中罐装工厂生产出的罐装水果和香蕉都属于一个产品族。要完成我们所说的代码要一步一步建立我们的工厂和产品。

  首先我们要建立两个接口,再建立四个产品类分别各自继承其接口。

/**
 * @author mugglean
 * 
 *
 */

//苹果接口
public interface Apple {
    public void produce();
}


//香蕉接口
public interface Banana {
    public void produce();
}


//袋装苹果类
public class BagApple implements Apple {

    @Override
    public void produce() {
        // TODO Auto-generated method stub
        System.out.println("-------生产了一个袋装苹果-------");
    }

}

//罐装苹果类
public class CannedApple implements Apple {

    @Override
    public void produce() {
        // TODO Auto-generated method stub
        System.out.println("-------生产了一个罐头苹果-------");
    }

}

//袋装香蕉类
public class BagBanana implements Banana {

    @Override
    public void produce() {
        // TODO Auto-generated method stub
        System.out.println("-------生产了一个袋装香蕉-------");
    }

}

//罐装香蕉类
public class CannedBanana implements Banana {

    @Override
    public void produce() {
        // TODO Auto-generated method stub
        System.out.println("-------生产了一个罐头香蕉-------");

    }

}

  然后我们再建一个抽象工厂和两个实体工厂,就是我们的罐头工厂和袋装工厂。

//工厂接口
public interface FruitFactory {
    //生产香蕉
    public Banana getBanana();
    //生产苹果
    public Apple getApple();
}

//罐头工厂
public class CannedFactory implements FruitFactory {

    @Override
    public Banana getBanana() {
        // TODO Auto-generated method stub
        return new CannedBanana();
    }

    @Override
    public Apple getApple() {
        // TODO Auto-generated method stub
        return new CannedApple();
    }

}


//袋装工厂
public class BagFactory implements FruitFactory {

    @Override
    public Banana getBanana() {
        // TODO Auto-generated method stub
        return new BagBanana();
    }

    @Override
    public Apple getApple() {
        // TODO Auto-generated method stub
        return new BagApple();
    }

}

  这样我们的所有类都建立好了,再建一个测试进程。

public class TestDrive {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        FruitFactory factoryone=new BagFactory();
        Banana myBanana=factoryone.getBanana();
        myBanana.produce();
        
        
        FruitFactory factorytwo=new CannedFactory();
        Apple myApple=factorytwo.getApple();
        myApple.produce();
    }

}

  运行结果如下:

-------生产了一个袋装香蕉-------
-------生产了一个罐头苹果-------

  成功实现了工厂模式,这样两个工厂模式就讲解完毕了,工厂模式在JDBC和Spring中都有很好的运用,是一个很基础的设计模式。

posted @ 2018-04-19 01:12  Mugglean  阅读(159)  评论(0编辑  收藏  举报