JAVA设计模式之工厂模式

工厂模式的特点

1.工厂模式隐藏创建的细节
2.工厂模式的核心:工厂类(factory)
3.工厂模式可分为简单工厂,工厂方法,抽象工厂
工厂模式主要通过一个“中间人”来简化对象创建的过程,这个中间人就是工厂类,简单工厂,工厂方法,抽象工厂
其目的都是为了隐藏创建类的细节,但设计理念不同。
一,简单工厂模式

public interface Product {
    public void desc();
}
public class MobilePhone implements Product {
    @Override
    public void desc() {
        System.out.println("生产手机");
    }
}
public class Pad implements Product {
    @Override
    public void desc() {
        System.out.println("生产平板");
    }
}
public class Computer implements Product {
    @Override
    public void desc() {
        System.out.println("生产电脑");
    }
}
public class Factory {
    public static Product produce(String pName) {
        if("phone".equals(pName)) {
            return new MobilePhone();
        } else if("computer".equals(pName)) {
            return new Computer();
        } else if("pad".equals(pName)) {
            return new Pad();
        } else {
            return null;
        }
    }
}
public class Demo {
    public static void main(String[] args) {
        Product pdt = Factory.produce("pad");
        pdt.desc();
    }
}

二,工厂模式
工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象

public interface Product {
    public void desc();
}
public class MobilePhone implements Product {
    @Override
    public void desc() {
        System.out.println("生产手机");
    }
}
public class Pad implements Product {
    @Override
    public void desc() {
        System.out.println("生产平板");
    }
}
public class Computer implements Product {
    @Override
    public void desc() {
        System.out.println("生产电脑");
    }
}
public class Factory {
    //手机生产线
    public static Product mobilePhone() {
        return new MobilePhone();
    }
    
    //电脑生产线
    public static Product computer() {
        return new Computer();
    }
    
    //平板生产线
    public static Product pad() {
        return new Pad();
    }
}
public class Demo {
    public static void main(String[] args) {
        Product pdt = Factory.computer();
        pdt.desc();
    }
}

你可能感兴趣的:(JAVA设计模式之工厂模式)