作用:给系统带来更大的可扩展性和尽量少的修改量;
for example 有的时候你需要一个类的实例,如果用工厂模式的,你只需要调用这个工厂方法就可以了,而不需要去关注如何产生这个类,有可能这个方法是直接new得到的,也有可能通过一些别的方法得到的(可能会很麻烦),这样如何得到实例的细节你不用去考虑,你只需要关注于你的业务就可以了。
- interface Car {
- void drive();
- }
-
- class Benz implements Car {
-
- @Override
- public void drive() {
- System.out.println("drive Benz");
- }
-
- }
-
- class Bmw implements Car {
-
- @Override
- public void drive() {
- System.out.println("drive Bmw");
- }
-
- }
-
- class CarFactory {
- public static Car creator(String carType) {
- if (carType.equals("Benz")) {
- return new Benz();
- } else if (carType.equals("Bmw")) {
- return new Bmw();
- } else {
- throw new UnsupportedOperationException("car with type" + carType
- + " is not supported.");
- }
- }
- }
-
- public class A {
- public static void main(String args[]) {
- Car benz = CarFactory.creator("Benz");
- benz.drive();
- Car bmw = CarFactory.creator("Bmw");
- bmw.drive();
- }
- }