上一篇我以烧烤为例,介绍Java普通工厂模式,现在我们以兰州拉面为例介绍抽象工厂模式。
首先角色转变下,想象自己是一个准备开兰州拉面馆,注意兰州拉面馆是个牌子哦,我等于开分店一样,好的,我们把开兰州拉面分店这个抽象出来,他相当于一个营业执照,执照上面经营范围是兰州拉面
package com;
//兰州拉面,它是一个牌子,可以开分店,这个接口是开一家兰州拉面的分店
public interface Lanzhoulamianshop {
//分店提供拉面
public Lanzhoulamianprovide getlamian();
}
分店最主要的功能,也是拉面老板最主要做的事情就是提供拉面
package com;
//生产兰州拉面接口,功能就是做兰州拉面
public interface Lanzhoulamianprovide {
public void providelamian();
}
现在我们开始开一家拉面馆,这家拉面馆指定为兰州拉面馆,他要实现开分店的接口,就是说我要相关营业执照,执照上面经营范围是 兰州拉面
package com;
//拉面店
public class Lamianshop implements Lanzhoulamianshop{
public Lamianshop(){}
public Lamianshop(String addr){
System.out.println("这是一家位于"+addr+"的拉面馆");
}
@Override
public Lanzhoulamianprovide getlamian() {
// TODO Auto-generated method stub
return new LamianImp();
}
}
完事具备,就差具体做拉面的实现了,上代码
package com;
public class LamianImp implements Lanzhoulamianprovide{
@Override
public void providelamian() {
// TODO Auto-generated method stub
System.out.println("做了一碗正宗的兰州拉面!");
}
}
吃货上场,开始叫外面
package com;
public class Ts {
public static void main(String[] args) {
//1,找到西兴的拉面馆
Lanzhoulamianshop lshop=new Lamianshop("西兴");
//2,下单
System.out.println("找到了,下单");
// 3,拉面馆做拉面
Lanzhoulamianprovide lp=lshop.getlamian();
lp.providelamian();
}
}
以兰州拉面为例-白话Java抽象工厂模式
网友评论