Java工厂模式浅析理解

由于本人缺乏工作经验,本篇文章作为随笔,只是对工厂模式有一个简单的认识

工厂模式分为以下三种:

1:简单工厂(Simple Factory)。
2:工厂方法(Factory Method)。
3:抽象工厂(Abstract Factory)。

本次模拟的是第三种——抽象工厂

抽象工厂的大致思路

  多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
  一个抽象工厂类,可以派生出多个具体工厂类。
   每个具体工厂类可以创建多个具体产品类的实例。

好了,不多说,根据上面的思路来贴一下部分代码

在这里,我是以汽车、食物两种类别来进行模拟

汽车——宝马、奔驰

食物——苹果、橘子

首先编写食物类,在这里,我将Food作为抽象类(也可作为接口)

public abstract class Food {

    public abstract void eat();
}

汽车也一样

public abstract class Car {

    public abstract void creat();
}

然后将,宝马,奔驰继承Car ,橘子,苹果继承食物

public class Apple extends Food{

    public Apple() {
        super();
        this.eat();
    }
    @Override
    public void eat() {
        System.out.println("Apple...eat");
        
    }

}
public class Benz extends Car{

    @Override
    public void creat() {
        System.out.println("benz...creat");
    }

}
public class Orange extends Food{

    @Override
    public void eat() {
        System.out.println("Orange...eat");        
    }
public class BMW  extends Car{

    @Override
    public void creat() {
        System.out.println("BMW...creat");       
    }

}

然后,下一个思路就是将工厂分为A和B 实现分类显示的功能,在这里我将Apple和BMW作为FactoryA ,Orange和Benz作为FactoryB

并且,将FactoryA和FactoryB实现Factory的接口以实现分类的效果

public class Factory1 implements Factory {
    public Car creat() {
        return new Benz();
    }
    public Food eat() {
        return new Apple();
    }

}

至此,以达到需要的效果

当调用FactoryA时,控制台打印出Apple,BMW  

当调用FactoryA时,控制台打印出Orange,Benz

 

声明:本篇文章理解于 http://www.cnblogs.com/zhouqiang/archive/2012/07/20/2601365.html的思路,但其中也融合了本人的思路。

如有其他意见,请评论版上评论,谢谢

posted @ 2017-08-10 13:25  ChoviWu  阅读(1475)  评论(0编辑  收藏  举报