工厂模式

java设计模式之工厂模式

什么是工厂模式:实现了对同一接口下一些类的实例的创建,定义了一个产生实例对象的接口,让其子类决定实例化哪个工厂类

工厂方法模式:

看栗子:

假设我们有一个游戏(Game)接口,它有两个实现类,一个是手机游戏,一个是电脑游戏,游戏都是由一个工厂生产的。

1
2
3
4
public interface Game {

public void downLoad();
}
1
2
3
4
5
6
7
8
public class PhoneGame implements Game{

@Override
public void downLoad() {

System.out.println("下载手机游戏");
}
}
1
2
3
4
5
6
7
8
public class ComputerGame implements Game{

@Override
public void downLoad() {

System.out.println("下载电脑游戏");
}
}
1
2
3
4
5
6
7
8
9
10
//游戏工厂 负责生产游戏
public class GameFactory {

public Game getPhoneGame() {
return new PhoneGame();
}
public Game getComputerGame() {
return new ComputerGame();
}
}

抽象工厂模式

简单工厂模式对象的创建依赖于工厂,当我们新增一个对象时,需要更改工厂类

比如当增加一个新的电视游戏类时,我们需要在工厂类添加一个方法获取电视游戏对象

所以,为了避免更改工厂类,采用抽象工厂模式。

抽象工厂模式采用增加工厂类的方法来避免修改代码

还是上面的例子:

1
2
3
4
public interface Game {

public void downLoad();
}
1
2
3
4
5
6
7
8
public class PhoneGame implements Game{

@Override
public void downLoad() {

System.out.println("下载手机游戏");
}
}
1
2
3
4
5
6
7
8
public class ComputerGame implements Game{

@Override
public void downLoad() {

System.out.println("下载电脑游戏");
}
}

提供一个抽象工厂负责创建游戏对象

1
2
3
4
public interface Factory {

public Game getGame();
}

真正创建对象的工厂

1
2
3
4
5
6
7
8
9
public class ComputerFactory implements Factory{

@Override
public Game getGame() {

return new ComputerGame();
}

}
1
2
3
4
5
6
7
public class PhoneFactory implements Factory{

@Override
public Game getGame() {
return new PhoneGame();
}
}

当我们增加一个新的电视游戏类的时候,再创建一个电视游戏工厂就可以了。

说了这么多,那工厂模式有什么用呢?

首先工厂模式是为了帮我们创建对象的,那为什么要使用工厂模式呢,

工厂模式帮我们降低了耦合性,将对象的使用和创建分离开

降低代码重复使用,如果一个对象的创建需要很多初始化参数,我们不需要在每个需要它的类中去创建,在工厂类中创建一次就行。工厂类创建封装了创建对象的细节

文章目录
  1. 1. java设计模式之工厂模式
    1. 1.1. 工厂方法模式:
    2. 1.2. 抽象工厂模式
|
载入天数...载入时分秒...