抽象⼯⼚模式
⼀、题⽬:
某软件公司要推出⼀款新的⼿机游戏软件,该软件⽀持IOS、Android和Windows Phone等多个智能⼿机操作系统平台,针对不同的⼿机操作系统,该游戏软件提供了不同的游戏操作控制类(OperationController)和游戏界⾯控制类(InterfaceController),并提供的相应的⼯⼚类来封装这些类的初始化过程。该软件要求具有较好的扩展性,以⽀持新的操作系统平台,为了满⾜上述要求,试采⽤抽象⼯⼚模式对其进⾏设计。 (1)绘制抽象⼯⼚模式结构视图
(2)给出实例类图并实现代码。
⼆、所⽤模式结构视图:
三、实例类图:
四、实例实现代码:
(因为区分,所以在类的前⾯加了Gj19)
package AbstractFactoryPattern;
/**
* 抽象产品-游戏界⾯控制类
* @author gong
*
*/
public interface Gj19IInterfaceController {
public void Interface();
}
具体产品-Android游戏界⾯控制类
package AbstractFactoryPattern;
/**
* 具体产品-Android游戏界⾯控制类
* @author gong
*广州地铁二号线
*/
public class Gj19AndroidInterfaceController implements Gj19IInterfaceController {
@Override
public void Interface() {
System.out.println("Android游戏界⾯控制");
}
}
具体产品-IOS游戏界⾯控制类
周亮李美玲package AbstractFactoryPattern;
/**
* 具体产品-IOS游戏界⾯控制类
* @author gong
*
*/
public class Gj19IOSInterfaceController implements Gj19IInterfaceController {
@Override
public void Interface() {
System.out.println("IOS游戏界⾯控制");
}
}
具体产品-WindowsPhone游戏界⾯控制类
package AbstractFactoryPattern;
/**
* 具体产品-WindowsPhone游戏界⾯控制类
* @author gong
*
*/
public class Gj19WindowsPhoneInterfaceController implements Gj19IInterfaceController {
@Override
public void Interface() {
System.out.println("WindowsPhone游戏界⾯控制");
}
}
抽象产品-游戏操作控制类
package AbstractFactoryPattern;
/**
* 抽象产品-游戏操作控制类
* @author gong
*
*/
public interface Gj19IOperationController {
public void Operator();
}
具体产品-Andriod游戏操作控制类
package AbstractFactoryPattern;
/**
* 具体产品-Andriod游戏操作控制类
* @author gong
*
*/
public class Gj19AndroidOperationController implements Gj19IOperationController {
@Override
public void Operator() {
System.out.println("Andriod游戏操作控制");
}
}
具体产品-IOS游戏操作控制类
package AbstractFactoryPattern;
/**
* 具体产品-IOS游戏操作控制类
* @author gong
*
*/
public class Gj19IOSOperationController implements Gj19IOperationController {
@Override
public void Operator() {
System.out.println("IOS游戏操作控制");
}
}
具体产品-WindowsPhone游戏操作控制类
package AbstractFactoryPattern;
/**
* 具体产品-WindowsPhone游戏操作控制类
* @author gong
*
*/
public class Gj19WindowsPhoneOperationController implements Gj19IOperationController {
@Override
public void Operator() {
System.out.println("WindowsPhone游戏操作控制");
}
}
抽象⼯⼚–游戏控制类
package AbstractFactoryPattern;
/**
* 抽象⼯⼚--游戏控制类
* @author gong
*
*/
public interface Gj19GameController {
//游戏操作控制
public Gj19IOperationController OperationController();
//游戏界⾯控制
public Gj19IInterfaceController InterfaceController();
}
具体⼯⼚–Android游戏控制类
package AbstractFactoryPattern;
/**
* 具体⼯⼚--Android游戏控制类
* @author gong
*
*/
public class AndroidController implements Gj19GameController {
//Android游戏操作控制
@Override
public Gj19IOperationController OperationController() {
return new Gj19AndroidOperationController();
}
//Android游戏界⾯控制
@Override
public Gj19IInterfaceController InterfaceController() {变压器油罐
return new Gj19AndroidInterfaceController();
}
}
具体⼯⼚–IOS游戏控制类
package AbstractFactoryPattern;
n 二甲基亚硝胺/**
* 具体⼯⼚--IOS游戏控制类
* @author gong
*
*/
public class IOSController implements Gj19GameController {
//IOS游戏操作控制
@Override
public Gj19IOperationController OperationController() {课堂教学即时评价
return new Gj19IOSOperationController();
}
//IOS游戏界⾯控制
@Override
数学学习与研究public Gj19IInterfaceController InterfaceController() {
return new Gj19IOSInterfaceController();
}
}
具体⼯⼚– WindowsPhone游戏控制类