首页 > 学院 > 开发设计 > 正文

抽象工厂

2019-11-06 07:33:28
字体:
来源:转载
供稿:网友

参考《设计模式的艺术软件开发人员内功修炼之道》-刘伟 著

实验目的

抽象工厂可以理解为多态工厂的增强版,一个具体的工厂类负责生产一组不同产品

实验代码

package AbstractFactory;interface OperationController{ public void DoOperation();}class SymbianOperationController implements OperationController { @Override public void DoOperation() { // TODO Auto-generated method stub System.out.PRintln("SymbianOperationController..."); }}class AndroidOperationController implements OperationController { @Override public void DoOperation() { // TODO Auto-generated method stub System.out.println("AndroidOperationController..."); }}class WindowsOperationController implements OperationController { @Override public void DoOperation() { // TODO Auto-generated method stub System.out.println("WindowsOperationController..."); }}interface InterfaceController{ public void DisplayInterface();}class SymbianInterfaceController implements InterfaceController{ @Override public void DisplayInterface() { // TODO Auto-generated method stub System.out.println("SymbianInterfaceController..."); }}class AndroidInterfaceController implements InterfaceController{ @Override public void DisplayInterface() { // TODO Auto-generated method stub System.out.println("AndroidInterfaceController..."); }}class WindowsInterfaceController implements InterfaceController{ @Override public void DisplayInterface() { // TODO Auto-generated method stub System.out.println("WindowsInterfaceController..."); }}interface OperationSystem{ public OperationController getOperationController(); public InterfaceController getInterfaceController();}class Symbian implements OperationSystem{ @Override public OperationController getOperationController() { // TODO Auto-generated method stub return new SymbianOperationController(); } @Override public InterfaceController getInterfaceController() { // TODO Auto-generated method stub return new SymbianInterfaceController(); }}class Android implements OperationSystem{ @Override public OperationController getOperationController() { // TODO Auto-generated method stub return new AndroidOperationController(); } @Override public InterfaceController getInterfaceController() { // TODO Auto-generated method stub return new AndroidInterfaceController(); }}class Windows implements OperationSystem{ @Override public OperationController getOperationController() { // TODO Auto-generated method stub return new WindowsOperationController(); } @Override public InterfaceController getInterfaceController() { // TODO Auto-generated method stub return new WindowsInterfaceController(); }}public class AbstractFactoryTest { public static void main(String[] args) { // TODO Auto-generated method stub OperationSystem os = new Android(); OperationController oc = os.getOperationController(); InterfaceController ic = os.getInterfaceController(); oc.DoOperation(); ic.DisplayInterface(); }}

结果输出

AndroidOperationController...AndroidInterfaceController...

总结

抽象工厂相比多态工厂减少了工厂类的数量工厂要求初期设计上保证考虑周全,后期增加接口,需要修改所有工厂类
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表