安卓复习之旅—工厂模式(一)

今天来复习一下Java设计模式中的工厂模式,工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪个类。包含几下几种形态:

  • 简单工厂模式,又称静态工厂模式;
  • 工厂方法模式
  • 抽象化模式

简单工厂模式
简单工厂模式是类的创建模式,根据传入的参数决定生产怎样的产品,结构如下:
这里写图片描述

简单工厂模式包含工厂角色、抽象产品角色和具体产品角色;
下面以一个水果的例子来说明简单工厂模式:

首先设计水果的生命周期的接口:

/**
 * 产品的接口
 * 
 * @author Administrator
 *
 */
public interface Fruit {
    /**
     * 种植
     */
    void plant();

    /**
     * 生长
     */
    void grow();

    /**
     * 收获
     */
    void harvest();
}

然后具体的水果的具体生命周期中的行为,以及自个的特性:

/**
 * 具体的产品
 * 
 * @author Administrator
 *
 */
public class Apple implements Fruit {
    /**
     * 每种产品自有的特性
     * 顏色
     */
    private int appleColor;


    public int getAppleColor() {
        return appleColor;
    }

    public Apple setAppleColor(int appleColor) {
        this.appleColor = appleColor;
        return this;
    }

    @Override
    public void plant() {
        // TODO Auto-generated method stub
        System.out.println("Apple has been planted");
    }

    @Override
    public void grow() {
        // TODO Auto-generated method stub
        System.out.println("Apple is growing");

    }

    @Override
    public void harvest() {
        // TODO Auto-generated method stub
        System.out.println("Apple has   been harvested");

    }

}

最后在肥沃的土壤中生长吧:

/**
 * 生产产品的工厂
 * 
 * @author Administrator
 *
 */
public class FruitFactory {

    public static Fruit createFruit(String type) {
        if (type.equals("Apple")) {
            return new Apple();
        }
        if (type.equals("WaterMelon")) {
            return new WaterMelon().setHasSeed(true);
        }
        return null;

    }
}

测试一下我们的水果是怎样的:

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        WaterMelon fruit = (WaterMelon) FruitFactory.createFruit("WaterMelon");
        fruit.plant();
        fruit.grow();
        fruit.harvest();
        System.out.println("WaterMelon is has seed:"+fruit.isHasSeed());
    }

}

结果:

WaterMelon has been planted
WaterMelon is growing
WaterMelon has  been harvested
WaterMelon is has seed:true

优缺点

-优点
核心是工厂类,该类有必要的逻辑判断,可以决定什么时候创建特定的实例,客户端不用关心怎么创建,只需要拿到这个实例就行了,做到了对责任的分割;
-缺点
当产品类有复杂的多层次的等级结构时,工厂类势必会狠臃肿,这就需要我们用工厂方法模式啦:

okay:一个简单的工厂模式就这样完成了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值