工厂模式

工厂模式:

  • 作用:

    • 实现了创建者和调用者的分离

    • 详细分类:

      • 简单工厂模式

        1
        2
        3
        public interface Car {
        void name();
        }
        1
        2
        3
        4
        5
        6
        public class Tesla implements  Car{
        @Override
        public void name() {
        System.out.println("特斯拉!");
        }
        }
        1
        2
        3
        4
        5
        6
        public class WuLing implements Car {
        @Override
        public void name() {
        System.out.println("五菱宏光");
        }
        }
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        //静态工厂模式
        //增加一个新的产品,如果不改变代码,做不到实现!
        public class CarFactory {
        //方法一
        public static Car getCar(String car){
        if (car.equals("五菱")){
        return new WuLing();
        }else if (car.equals("特斯拉")){
        return new Tesla();
        }else{
        return null;
        }
        }
        //方法二
        public static Car getWuling(){
        return new WuLing();
        }
        public static Car getTesla(){
        return new Tesla();
        }
        }
        1
        2
        3
        4
        5
        6
        7
        8
        9
        //测试方法
        public static void main(String[] args) {

        Car car = CarFactory.getCar("五菱");
        Car car2 = CarFactory.getCar("特斯拉");

        car.name();
        car2.name();
        }
* 工厂方法模式

  ![1581256720707](C:\Users\单少宝宝\AppData\Roaming\Typora\typora-user-images\1581256720707.png)

  * 代码实现:

    
1
2
3
public interface Car {
void name();
}
1
2
3
4
//工厂方法模式
public interface CarFactory {
Car getCar();
}
1
2
3
4
5
6
public class MoBai implements Car {
@Override
public void name() {
System.out.println("膜拜单车");
}
}
1
2
3
4
5
6
public class MoBaiFactory implements CarFactory {
@Override
public Car getCar() {
return new MoBai();
}
}
1
2
3
4
5
//测试方法
public static void main(String[] args) {
Car car2 = new MoBaiFactory().getCar();
car2.name();
}
  • 核心本质:

    • 实例化对象不使用new ,用工厂方法代替
    • 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

抽象工厂模式:

定义:抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定它们具体的类。