简单工厂模式
我有一个水果工厂负责生产 苹果和橘子
这个时候我有一个水果的抽象接口,所有水果都来实现这个接口
// 水果的接口
public interface Fruit {
    public String getTaste();
    public String getName();
}
//苹果的实现类
public class Apple implements Fruit{
    @Override
    public String getTaste() {
        return "我的味道有点甜";
    }
    @Override
    public String getName() {
        return "我的名字叫苹果";
    }
}
//橘子的实现类
public class Orange implements Fruit{
    @Override
    public String getTaste() {
        return "我的味道有点酸";
    }
    @Override
    public String getName() {
        return "我的名字叫橘子";
    }
}
//工厂类
public class FruitFactory {
    public static Fruit createFruit(String fruitName){
        Fruit fruit=null;
        switch (fruitName){
            case "apple":
                fruit=new Apple();
                break;
            case "orange":
                fruit=new Orange();
                break;
            default:
                System.out.println("没有匹配的水果可生产");
                break;
        }
        return fruit;
    }
}
这样通过这个工厂就能由客户决定生产什么水果
public class Customer {
public static void main(String[] args) {
Fruit fruit=FruitFactory.createFruit("apple");
System.out.println(fruit.getName());
System.out.println(fruit.getTaste());
Fruit origin=FruitFactory.createFruit("orange");
System.out.println(origin.getName());
System.out.println(origin.getTaste());
}
}
这样就能得到客户想要的东西,而客户并不知道如何实现的生产过程
但是也有一个缺点就是,老板过来说,我们的销量太好了,准备添加其他水果,小李啊你来搞一下,小李一看,这没办法只能改源代码啊,于是乎就违反了开闭原则。
所谓的开闭原则,就是写完的代码不要老改动,而是去拓展
这也就是简单工厂模式的缺点
进而出现了工厂模式,工厂模式是简单工厂模式的拓展和抽象
原文:https://www.cnblogs.com/qxhn/p/9124383.html