工厂模式

概念

定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

图片来自网络

实例
PlanedNoodleStore,StretchedNoodleStore实现接口NoodleStore

public interface NoodleStore {
    Noodle orderNoodle(String type);
}

public class PlanedNoodleStore implements NoodleStore {
    public Noodle orderNoodle(String type) {
        Noodle noodle = null;
        if (type.equalsIgnoreCase("Hot"))
            noodle = new HotPlanedNoodle();
        else
            noodle = new UnhotPlanedNoodle();
        return noodle;
    }
}
public class StretchedNoodleStore implements NoodleStore{
    public Noodle orderNoodle(String type) {
        Noodle noodle=null;
        if(type.equalsIgnoreCase("Hot"))    
            noodle=new HotStretchedNoodle();
        else
            noodle=new UnhotStretchedNoodle();
        return noodle;
    }
}

StretchedNoodle,PlanedNoodle各有两种口味

public abstract class Noodle {
     String description = "";
    public String getDescription() {
        return description;
    }
}
public class HotPlanedNoodle extends Noodle {
    HotPlanedNoodle() {
        discreption = "辣味刀削面";
    }
}
public class UnhotPlanedNoodle extends Noodle {
    UnhotPlanedNoodle() {
        discreption = "淡味刀削面";
    }
}

public class HotStretchedNoodle extends Noodle {
    HotStretchedNoodle() {
        discreption = "辣味拉面";
    }
}

public class UnhotStretchedNoodle extends Noodle {
    UnhotStretchedNoodle() {
        discreption = "淡味拉面";
    }
}

测试代码

        NoodleStore store=new PlanedNoodleStore();
        Noodle noodle=store.orderNode("Hot");
        System.out.println(noodle.getDescription());
        store=new StretchedNoodleStore();
        noodle=store.orderNode("unhot");
        System.out.println(noodle.getDescription());

测试结果

辣味刀削面
淡味拉面

参考链接
* http://www.cnblogs.com/poissonnotes/archive/2010/12/01/1893871.html
* 《Head First 设计模式》

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值