工厂模式:
作用:
实现了创建者和调用者的分离
详细分类:
简单工厂模式
1
2
3public interface Car {
void name();
}1
2
3
4
5
6public class Tesla implements Car{
public void name() {
System.out.println("特斯拉!");
}
}1
2
3
4
5
6public class WuLing implements Car {
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 {
public void name() {
System.out.println("膜拜单车");
}
}
1
2
3
4
5
6
public class MoBaiFactory implements CarFactory {
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 ,用工厂方法代替
- 将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
抽象工厂模式:
定义:抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定它们具体的类。