抽象工厂模式练习
某软件公司要推出一款新的手机游戏软件,该软件支持IOS、Android和Windows Phone等多个智能手机操作系统平台,针对不同的手机操作系统,该游戏软件提供了不同的游戏操作控制类(OperationController)和游戏界面控制类(InterfaceController),并提供的相应的工厂类来封装这些类的初始化过程。该软件要求具有较好的扩展性,以支持新的操作系统平台,为了满足上述要求,试采用抽象工厂模式对其进行设计。
(1)绘制抽象工厂模式结构视图
(2)给出实例类图并实现代码
package AbstractFactoryPattern;
/** * 抽象产品-游戏界面控制类 */
public interface Gj19IInterfaceController {
public void Interface();
}
package AbstractFactoryPattern;
/** * 具体产品-Android游戏界面控制类 */
public class Gj19AndroidInterfaceController implements Gj19IInterfaceController {
@Override
public void Interface() {
System.out.println("Android游戏界面控制");
}
}
package AbstractFactoryPattern;
/** * 具体产品-IOS游戏界面控制类 */
public class Gj19IOSInterfaceController implements Gj19IInterfaceController {
@Override
public void Interface() {
System.out.println("IOS游戏界面控制");
}
}
package AbstractFactoryPattern;
/** * 具体产品-WindowsPhone游戏界面控制类 */
public class Gj19WindowsPhoneInterfaceController implements Gj19IInterfaceController {
@Override
public void Interface() {
System.out.println("WindowsPhone游戏界面控制");
}
}
package AbstractFactoryPattern;
/** * 抽象产品-游戏操作控制类 */
public interface Gj19IOperationController {
public void Operator();
}
package AbstractFactoryPattern;
/** * 具体产品-Andriod游戏操作控制类 */
public class Gj19AndroidOperationController implements Gj19IOperationController {
@Override
public void Operator() {
System.out.println("Andriod游戏操作控制");
}
}
package AbstractFactoryPattern;
/** * 具体产品-IOS游戏操作控制类 */
public class Gj19IOSOperationController implements Gj19IOperationController {
@Override
public void Operator() {
System.out.println("IOS游戏操作控制");
}
}
package AbstractFactoryPattern;
/** * 具体产品-WindowsPhone游戏操作控制类 */
public class Gj19WindowsPhoneOperationController implements Gj19IOperationController {
@Override
public void Operator() {
System.out.println("WindowsPhone游戏操作控制");
}
}
package AbstractFactoryPattern;
/** * 抽象工厂--游戏控制类 */
public interface Gj19GameController {
//游戏操作控制
public Gj19IOperationController OperationController();
//游戏界面控制
public Gj19IInterfaceController InterfaceController();
}
package AbstractFactoryPattern;
/** * 具体工厂--Android游戏控制类 */
public class AndroidController implements Gj19GameController {
//Android游戏操作控制
@Override
public Gj19IOperationController OperationController() {
return new Gj19AndroidOperationController();
}
//Android游戏界面控制
@Override
public Gj19IInterfaceController InterfaceController() {
return new Gj19AndroidInterfaceController();
}
}
package AbstractFactoryPattern;
/** * 具体工厂--IOS游戏控制类 */
public class IOSController implements Gj19GameController {
//IOS游戏操作控制
@Override
public Gj19IOperationController OperationController() {
return new Gj19IOSOperationController();
}
//IOS游戏界面控制
@Override
public Gj19IInterfaceController InterfaceController() {
return new Gj19IOSInterfaceController();
}
}
package AbstractFactoryPattern;
/** * 具体工厂-- WindowsPhone游戏控制类 */
public class WindowsPhoneController implements Gj19GameController {
// WindowsPhone游戏操作控制
@Override
public Gj19IOperationController OperationController() {
return new Gj19WindowsPhoneOperationController();
}
// WindowsPhone游戏界面控制
@Override
public Gj19IInterfaceController InterfaceController() {
return new Gj19WindowsPhoneInterfaceController();
}
}
package AbstractFactoryPattern;
/** * 测试抽象工厂模式 */
public class TestAbstractFactoryPattern {
public static void main(String[] args) {
Gj19GameController gj19GameController; //抽象工厂--游戏控制类
Gj19IInterfaceController gj19IInterfaceController; //游戏界面控制类
Gj19IOperationController gj19IOperationController; //游戏操作控制类
gj19GameController = new AndroidController(); //具体工厂--Android游戏控制类
gj19IInterfaceController = gj19GameController.InterfaceController();
gj19IOperationController = gj19GameController.OperationController();
gj19IInterfaceController.Interface();
gj19IOperationController.Operator();
}
}