工厂方法模式 是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。
- 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。
- 灵活性增强,对于新产品的创建,只需多写一个相应的工厂
animal抽象类
interface Animal {
public void eat();
}
animal实现类
public class Cow implements Animal{
@Override
public void eat() {
System.out.println("cow");
}
}
public class Sheep implements Animal{
@Override
public void eat() {
System.out.println("sheep");
}
}
factory抽象类
public interface AnimalFactory {
public Animal newAnimal();
}
factory实现类
牛养殖场:
public class CowFactory implements AnimalFactory{
@Override
public Animal newAnimal() {
return new Cow();
}
}
羊养殖场
public class SheepFactory implements AnimalFactory{
@Override
public Animal newAnimal() {
return new Sheep();
}
}
Main.
AnimalFactory factory = new CowFactory();//如果要变成羊,改这里就可以了。
Animal animal = factory.newAnimal();
animal.eat();