设计模式-简单工厂模式

java(OO)具备三大特性,封装、继承、多态。和面向过程相比,面向对象会把公共的逻辑进行封装,抽象为类。 工厂模式即提供一个工厂类,该工厂类根据类型进行实例化不同的对象,并且这些不同类型的对象具有同一个父类(继承), 借助多态使用该实例。

工厂类易于扩展,比如再增加一个子类,只需要添加子类并修改工厂类,不需要改动其他的子类

继承:

    abstract class Parent{
        public abstract void doSomething();
    }

    class Son1 extends Parent{
        @Override
        public void doSomething(){
            System.out.println("son1");
        }
    }

    class Son2 extends Parent{
        @Override
        public void doSomething(){
            System.out.println("son2");
        }
    }

工厂类

    class Factory{
        public static Parent getInstance(String type){
            Parent parent;
            switch (type){
                case "son1":
                    parent = new Son1();
                    break;
                case "son2":
                    parent = new Son2();
                    break;
                default:
                    throw new RuntimeException();
            }
            return parent;
        }
    }

使用

    public class TestMain {
        public static void main(String[] args) throws Exception{
           Parent inst = Factory.getInstance("son2");
           inst.doSomething();
        }
    }

UML spoon