工厂方法模式
定义:抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现
优缺点:
优点:客户端不需要负责对象的创建,如果有新对象增加,只需要添加具体类和具体工厂类即可
缺点:增加新对象的话,代码量增大
具体代码如下:
食物抽象类:
public abstract class Food {
public abstract void use();
}
食品类:
public class Eat extends Food {
@Override
public void use() {
System.out.println("This food can eat");
}
}
饮料类:
public class Drink extends Food {
@Override
public void use() {
System.out.println("This food can drink");
}
}
工厂抽象类:
public interface Factory {
public Food createFood();
}
食物工厂类:
public class EatFactory implements Factory {
@Override
public Food createFood() {
return new Eat();
}
}
饮料工厂类:
public class DrinkFactory implements Factory {
@Override
public Food createFood() {
return new Drink();
}
}
测试方法:
public class Main {
public static void main(String[] args) {
EatFactory e = new EatFactory();
DrinkFactory d = new DrinkFactory();
Eat eat = (Eat) e.createFood();
Drink drink = (Drink) d.createFood();
eat.use();
drink.use();
}
}
输出如下:
This food can eat
This food can drink