gpt4 book ai didi

java - 有什么办法可以减少这些线路吗?

转载 作者:太空宇宙 更新时间:2023-11-04 09:24:41 24 4
gpt4 key购买 nike

我正在使用 LeanFT 进行移动 GUI 测试自动化。我们有 1 个 IOS 应用程序和 1 个 Android 应用程序。

我们必须使用自动生成的两个不同的类。这些类包含相同的方法。

但是这些方法不在基类中。

现在我必须在首先进行强制转换时输入两次确切的代码。

abstract class Base{
//auto generated, cannot change anything
}

class IOS extends Base{
//auto generated, cannot change anything
public void launch(){}
}

class Android extends Base{
//auto generated, cannot change anything
public void launch(){}
}

//**************
// current Code
//**************

// Custom Method:
public Base getSpecific(){
if(//IOS){
return new IOS();
}
if(//Android){
return new Android();
}
return null;
}

Base base = getSpecific();

if(//IOS){
IOS ios = (IOS)base;
ios.launch()
// do same stuff
} else{
Android android = (Android)android;
android.launch()
//do same stuff
}

现在我必须在最后两次输入相同的内容。有没有办法减少只输入一次?

最佳答案

为了减少代码行数,可以使用工厂设计模式

请尝试按照我的步骤进行操作

  1. 创建工厂类

public class FactoryOperationSystem {
public Base getOs(String osType){

if(osType.equalsIgnoreCase("IOS")){
return new IOS();

} else if(osType.equalsIgnoreCase("ANDROID")){
return new Android();

}

return null;
}
}

2.添加与您相同的基类,在抽象基类中,我添加了示例方法来理解

public abstract class Base {

public void osDes() { // Just Exsample Only , you can remove it as your question

}
}

3.创建IOS类并扩展Base类

public class IOS extends Base{

public void osDes() {
System.out.println("IOS");
}
}

4.与创建Android类并扩展基类相同

public class Android  extends Base{
public void osDes() {
System.out.println("ANDROID");
}
}


  • 使用 MainMethod 创建类来访问您想要的工厂
  • public class AccessFactories {

    public static void main(String[] args) {
    //In here You can see How I am trying to access factory
    FactoryOperationSystem operatingSystemFactory = new FactoryOperationSystem();

    Base base=operatingSystemFactory.getOs("IOS");
    base.osDes();

    }

    }

    关于java - 有什么办法可以减少这些线路吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869603/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com