工厂设计模式:四个角色 抽象工厂 具体工厂 抽象产品 具体产品
优点:类的创建方法被封装 满足开闭原则
缺点 每增加一个具体产品都要新加一个工厂 会造成类爆炸
package com.qf.factorydemo.factory;
/**
* 工厂模式
* 四个角色:抽象产品 具体产品 抽象工厂 具体工厂
* <p>
* 类对象的创建与创建过程分离 满足开闭原则 但是 会造成类爆炸
*/
//抽象工厂
public interface Factory {
//抽象方法 去创造coffee
Coffee createCoffee();
}
package com.qf.factorydemo.factory;
//具体工厂
public class LSFactory implements Factory {
@Override
public Coffee createCoffee() {
return new LScoffee();
}
}
package com.qf.factorydemo.factory;
/**
* 抽象类 具体类去实现
*/
public abstract class Coffee {
//抽象方法
public abstract String getName();
//普通方法
public void addMilk() {
System.out.println("加奶");
}
public void addSugar() {
System.out.println("加糖");
}
}
package com.qf.factorydemo.factory;
//具体实现类
public class LScoffee extends Coffee {
@Override
public String getName() {
return "蓝山咖啡制作";
}
}
package com.qf.factorydemo.factory;
/**
* 咖啡店 结合coffee工厂与coffee产品
*/
public class CoffeeStore {
//声明factory
private Factory factory;
//指明具体的工厂
public void setFactory(Factory factory) {
this.factory = factory;
}
//点咖啡功能
public Coffee createCoffee() {
Coffee coffee = factory.createCoffee();
coffee.addMilk();
coffee.addSugar();
return coffee;
}
}