您的位置:首页 > 编程语言 > Java开发

设计模式练习(3)——抽象工厂模式

2017-01-18 17:18 337 查看

抽象工厂模式

一、题目:

某软件公司要推出一款新的手机游戏软件,该软件支持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;
/**
* 具体工厂--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游戏控制类

package AbstractFactoryPattern;
/**
* 具体工厂-- WindowsPhone游戏控制类
* @author gong
*
*/
public class WindowsPhoneController implements Gj19GameController {

// WindowsPhone游戏操作控制
@Override
public Gj19IOperationController OperationController() {
return new Gj19WindowsPhoneOperationController();
}

// WindowsPhone游戏界面控制
@Override
public Gj19IInterfaceController InterfaceController() {
return new Gj19WindowsPhoneInterfaceController();
}

}


测试抽象工厂模式

package AbstractFactoryPattern;
/**
* 测试抽象工厂模式
* @author gong
*
*/
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();
}

}


五、运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息