定义平台相关的具体工厂类:
public class WindowsGameEngineFactory implements GameEngineFactory {
@Override
public GraphicsRenderer createGraphicsRenderer() {
return new WindowsGraphicsRenderer();
}
@Override
public InputManager createInputManager() {
return new WindowsInputManager();
}
@Override
public AudioManager createAudioManager() {
return new WindowsAudioManager();
}
}
public class MacGameEngineFactory implements GameEngineFactory {
@Override
public GraphicsRenderer createGraphicsRenderer() {
return new MacGraphicsRenderer();
}
@Override
public InputManager createInputManager() {
return new MacInputManager();
}
@Override
public AudioManager createAudioManager() {
return new MacAudioManager();
}
}
public class LinuxGameEngineFactory implements GameEngineFactory {
@Override
public GraphicsRenderer createGraphicsRenderer() {
return new LinuxGraphicsRenderer();
}
@Override
public InputManager createInputManager() {
return new LinuxInputManager();
}
@Override
public AudioManager createAudioManager() {
return new LinuxAudioManager();
}
}
public class MobileGameEngineFactory implements GameEngineFactory {
@Override
public GraphicsRenderer createGraphicsRenderer() {
return new MobileGraphicsRenderer();
}
@Override
public InputManager createInputManager() {
return new MobileInputManager();
}
@Override
public AudioManager createAudioManager() {
return new MobileAudioManager();
}
}
定义具体产品类:
public class WindowsGraphicsRenderer extends GraphicsRenderer {
@Override
public void render() {
System.out.println("Windows图形渲染器进行渲染");
}
}
public class MacGraphicsRenderer extends GraphicsRenderer {
@Override
public void render() {
System.out.println("Mac图形渲染器进行渲染");
}
}
public class LinuxGraphicsRenderer extends GraphicsRenderer {
@Override
public void render() {
System.out.println("Linux图形渲染器进行渲染");
}
}
public class MobileGraphicsRenderer extends GraphicsRenderer {
@Override
public void render() {
System.out.println("移动端图形渲染器进行渲染");
}
}
public class WindowsInputManager extends InputManager {
@Override
public void handleInput() {
System.out.println("Windows输入管理器处理输入");
}
}
public class MacInputManager extends InputManager {
@Override
public void handleInput() {
System.out.println("Mac输入管理器处理输入");
}
}
public class LinuxInputManager extends InputManager {
@Override
public void handleInput() {
System.out.println("Linux输入管理器处理输入");
}
}
public class MobileInputManager extends InputManager {
@Override
public void handleInput() {
System.out.println("移动端输入管理器处理输入");
}
}
public class WindowsAudioManager extends AudioManager {
@Override
public void playSound() {
System.out.println("Windows音频管理器播放声音");
}
}
public class MacAudioManager extends AudioManager {
@Override
public void playSound() {
System.out.println("Mac音频管理器播放声音");
}
}
public class LinuxAudioManager extends AudioManager {
@Override
public void playSound() {
System.out.println("Linux音频管理器播放声音");
}
}
public class MobileAudioManager extends AudioManager {
@Override
public void playSound() {
System.out.println("移动端音频管理器播放声音");
}
}