一 模式定义
- 抽象工厂模式提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类。
- 抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。
二 模式举例
1 模式分析
我们借用爸爸和儿子到肯德基店消费这一场景来说明这一模式,进行抽象分析后的截图如下
2 抽象工厂模式的静态建模
3 代码示例
3.1 抽象食物的建立
抽象食物——AbstractBaseFood
package com.demo.factory.model;
/**
*
* 食物基类
*
* @author maofw
*
*/
public abstract class AbstractBaseFood
{
// 类别
protected String kind;
// 数量
protected int num;
// 价格
protected float price;
// 合计
public float totalPrice()
{
return this.num * this.price;
}
}
食物接口——IFood
package com.demo.factory.model;
/**
* 抽象食物接口
*
* @author maofw
*
*/
public interface IFood
{
/**
* 打印输出食物信息
*/
void printMesage();
}
3.2 建立不同食物的抽象基类
汉堡基类——Hamburg
package com.demo.factory.model;
/**
* 汉堡基类
*
* @author maofw
*
*/
public abstract class Hamburg extends AbstractBaseFood implements IFood
{
public void printMesage()
{
System.out.println("--" + this.kind + "风味汉堡,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
}
}
鸡翅基类——ChickenWings
package com.demo.factory.model;
/**
* 鸡翅基类
*
* @author maofw
*
*/
public abstract class ChickenWings extends AbstractBaseFood implements IFood
{
public void printMesage()
{
System.out.println("--" + this.kind + "风味鸡翅,\t单价:" + this.pri