背景:最近苹果发布了iPhone13的发布会,哎,看得我心痒痒,打开淘宝,一看,价格对于我来说过分"美丽",看了下手里的小米10,内存已提示不足。于是乎,还是搞个自己生产手机的工厂吧,寻个心理安慰。
简单工厂:顾名思义,就是很简单很简单。你给我什么模具,我就生产什么。
//简单工厂
public class PhoneFactorySimple {
interface Phone{
//生产手机
public void producePhone() ;
}
static class IPhone implements Phone{
@Override
public void producePhone() {
System.out.println("produce IPhone");
}
}
static class XiaomiPhone implements Phone{
@Override
public void producePhone() {
System.out.println("produce xiaomi phone");
}
}
static class PhoneFactory{
public static Phone getPhone(String name) {
if("xiaomi".equals(name)) {
return new XiaomiPhone();
}else if("apple".equals(name)) {
return new IPhone();
}else {
return null;
}
}
}
public static void main(String[] args) {
//没使用工厂模式之前,使用者和被使用者严重藕合
//Phone iphone = new IPhone();
// 使用之后,还是藕合,就是藕合转换到了工厂这里,交由工厂来同意管理生产对象
Phone iphone = ProductFactory.getPhone("apple");
if(null!=iphone) {
iphone.producePhone();
}
}
}
总结
- 优点:简单工厂消除了具体产品的依赖,我们可以动态来选择需要生产的产品
- 缺点:如果有新的产品要生产,我们都需要重新重新更改工厂代码,产品多了,工厂类会显得很臃肿,违反了开放-封闭原则,不仅不利于拓展,也对修改进行了开放。
tip:准备国庆节了,希望国家繁荣昌盛, I am Liture ,if you get tired,learn to rest,not to quit.