工厂设计
简单工厂例子
我们不用单独去new一个商品,而是通过工厂类传入参数进行获取实例化对象。
/**
* 冰淇淋接口
*
* @author uuz
* @date 2021/01/10
*/
interface IceCream {
/**
* 得到价格
*
* @return float
*/
float getPrice();
}
/**
* 巧克力冰淇淋
*
* @author uuz
* @date 2021/01/10
*/
class ChocolateIceCream implements IceCream {
@Override
public float getPrice() {
return 5.f;
}
}
/**
* 草莓冰淇淋
*
* @author uuz
* @date 2021/01/10
*/
class StrawberryIceCream implements IceCream {
@Override
public float getPrice() {
return 4.5f;
}
}
/**
* 冰淇淋店(工厂)
* 简单工厂
*
* @author uuz
* @date 2021/01/10
*/
class IceCreamShop {
/**
* 创建冰淇淋
*
* @param name 冰淇淋的名字
* @return {@link IceCream}
*/
public IceCream createIceCream(String name) {
IceCream iceCream;
switch (name) {
case "巧克力冰淇淋":
iceCream = new ChocolateIceCream();
break;
case "草莓冰淇淋":
iceCream = new StrawberryIceCream();
break;
default:
throw new IllegalStateException("Unexpected value: " + name);
}
return iceCream;
}
}
public class Test2 {
public static void main(String[] args) {
IceCreamShop iceCreamShop = new IceCreamShop();
IceCream iceCream1 = iceCreamShop.createIceCream("巧克力冰淇淋");
System.out.println(iceCream1.getPrice());
}
}