java设计模式------抽象工厂模式

这个模式,具体有啥作用,感觉作用不明显...可能是本人学艺不精吧。

目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究竟应该实例化哪一个产品具体对象。

工厂方法模式包含四个部分:

  • 抽象产品:产品对象同一的基类,或者是同一的接口。

  • 具体的产品:各个不同的实例对象类

  • 抽象工厂:所有的子类工厂类的基类,或是同一的接口

  • 具体的工厂子类:负责每个不同的产品对象的实际创建

类图:

工厂模式
1.产品层
  • 产品抽象层
/**
 * 产品抽象层
 */
public interface Car {
    /**
     * 上班函数
     */
    void gotowork();
}

  • Bike产品
/**
 * 具体产品
 */
public class Bike implements Car {
    public void gotowork() {
        System.out.println("骑自行车去上班!");
    }
}
  • Bus产品
/**
 * 具体产品
 */
public class Bus implements Car {
    public void gotowork() {
        System.out.println("坐公交车去上班!");
    }
}
2.工厂层
  • 工厂抽象层
/**
 * 工厂抽象
 */
public interface ICarFactory {
    /**
     * 获取交通工具
     */
    Car getCar();
}
  • BikeFactory工厂
import com.sqlb.factory.Car;
import com.sqlb.factory.ICarFactory;

/**
 * 具体工厂
 */
public class BikeFactory implements ICarFactory {
    public Car getCar() {
        return new Bike();
    }
}
  • BusFactory工厂
import com.sqlb.factory.Car;
import com.sqlb.factory.ICarFactory;

/**
 * 具体工厂
 */
public class BusFactory implements ICarFactory {
    public Car getCar() {
        return new Bus();
    }
}
3.测试

测试代码:

    public void test() {
        ICarFactory factory = null;
        // bike
        factory = new BikeFactory();
        Car bike = factory.getCar();
        bike.gotowork();

        // bus
        factory = new BusFactory();
        Car bus = factory.getCar();
        bus.gotowork();
    }

测试结果:

测试结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容