抽象工厂模式建立新的手机游戏软件(Java代码实例)

抽象工厂模式练习

某软件公司要推出一款新的手机游戏软件,该软件支持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();
    }
}

Guess you like

Origin blog.csdn.net/Luoxiaobaia/article/details/120300859