1. 简要介绍
实现了创造者和调用者的分离;详细分类:简单工厂模式,工厂方法模式,抽象工厂模式;用于创建对象,实现调用者和创建者的分离;将选择实现类、创建对象统一管理和控制,从而将调用者和我们的实际类解耦;实例化对象,用工厂方法代替new;
2. 简单工厂
用于生产同一等级结构的任意产品,对于增加的新产品,需要修改已经有的代码;但是简单工厂无法直接扩展后面的新产品,如果有新的产品出现,就只能修改源代码,所以这就是它最大的不足; 简单工厂实现的基本步骤: 1.先创建一个接口; 2.设置好需要创建的类; 3.在创建一个工厂类,用于生成所有需要的对象; 4.需要创建什么类就调用与之相关的方法(在工厂类中);
public class FuctionMudel {
public static Game
getGame(String game
) {
if (game
.equals("LOL")) {
return new LOL();
} else if (game
.equals("DNF")) {
return new DNF();
}
return null
;
}
}
interface Game {
void design();
}
class LOL implements Game {
@Override
public void design() {
System
.out
.println("对LOL进行设计...");
}
}
class DNF implements Game {
@Override
public void design() {
System
.out
.println("对DNF进行设计...");
}
}
3. 工厂方法模式
与简单工厂模式不同,简单工厂模式只有一个工厂类,而工厂方法模式有一组实现了相同接口的工厂类;工厂方法模式,使用之后会创建很多的类,导致管理上很复杂;简单了解即可;
public interface FunctionMethod {
Game
createGame();
}
interface Game {
void design();
}
class LOL implements Game {
@Override
public void design() {
System
.out
.println("对LOL进行设计...");
}
}
class DNF implements Game {
@Override
public void design() {
System
.out
.println("对DNF进行设计...");
}
}
class LolFunction implements FunctionMethod{
@Override
public Game
createGame() {
return new LOL();
}
}
4.抽象工厂模式
用来生产不同产品族的全部产品(无法增加新的产品);怎么理解,我觉得就是说可以把下面的一些功能区分出来了,也就是说可以对功能进行更加灵活的设置;
基础步骤记录: 1.创建主接口(类似于最开始的某一类产品,就是概括性的产品); 2.创建接口的实体类(类似于具体的产品); 3.创建一个接口(这个接口,主要是指同一个产品族里面的另一个事物); 4.创建一个抽象类,其中创建好返回对象的抽象方法; 5.编写具体的继承这个抽象方法的类;
interface LOL {
void design();
}
class LOLMatch implements LOL {
@Override
public void design() {
System
.out
.println("LOL进行匹配赛...");
}
}
interface ActivityLoL{
void doing();
}
class autoChess implements ActivityLoL{
@Override
public void doing() {
System
.out
.println("云顶之弈活动开始!");
}
}
abstract class Gamedesign{
abstract ActivityLoL
getActivity();
abstract LOL
getGame();
}
class LoLday extends Gamedesign{
@Override
ActivityLoL
getActivity() {
return new autoChess();
}
@Override
LOL
getGame() {
return new LOLMatch();
}
}