工厂方法模式

还是那个女娲造人的故事,先把人类的模型创建出来
创造个接口,叫IHuman;

    public abstract void getColor();
    public abstract void talk();
}

然后创建三个类,分别是BlackHuman,WhiteHuman,YellowHuman ,这三个类都继承了IHuman这个接口;

BlackHuman:
public class BlackHuman implements IHuman {

@Override
public void getColor() {
    System.out.println("黑种人");

}

@Override
public void talk() {
    System.out.println("黑种人说话了");
}

}
WhiteHuman:
public class WhiteHuman implements IHuman {

@Override
public void getColor() {
    System.out.println("白种人");

}

@Override
public void talk() {
    System.out.println("白种人说话了");
}}

YellowHuman:
public class YellowHuman implements IHuman {
@Override
public void getColor() {
System.out.println("黄种人");
}
@Override
public void talk() {
System.out.println("黄种人说话了");
}
}
然后再创建一个接口,取名IHumanFactory,这就像是一个炼丹炉的模型
public interface IHumanFactory {
public abstract IHuman createHuman(String human);
}
然后再创建一个类,取名HumanFactory,继承了IHumanFactory这个接口:
public class HumanFactory implements IHumanFactory {
public static final String BlackHuman = "blackHuman";
public static final String WhiteHuman = "whiteHuman";
public static final String YellowHuman = "yellowHuman";
public static HumanFactory humanFactory = null;
private HumanFactory(){
}
/*
/*这里设置了一个单列模式
/*
public static HumanFactory getIntance(){
if(humanFactory == null){
humanFactory = new HumanFactory();
}
return humanFactory;
}
/*
/*重写了IHumanFactory接口,判断两边是否相等,并将数值返回;
/*
@Override
public IHuman createHuman(String human) {
if(human.equals(HumanFactory.BlackHuman)){
return new BlackHuman();
}else if(human.equals(HumanFactory.WhiteHuman)){
return new WhiteHuman();
}else if(human.equals(HumanFactory.YellowHuman)){
return new YellowHuman();
}
return null;
}
}

创建一个类,这个就是程序入口,如果想创造哪个人类,可以直接在这里添加:

public class Client {
public static void main(String[] args) {
        BlackHuman bh = (BlackHuman)HumanFactory.getIntance().createHuman(HumanFactory.BlackHuman);
        bh.getColor();
        WhiteHuman wh = (WhiteHuman)HumanFactory.getIntance().createHuman(HumanFactory.WhiteHuman);
        wh.getColor();
        YellowHuman yh = (YellowHuman)HumanFactory.getIntance().createHuman(HumanFactory.YellowHuman);
        yh.getColor();
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值