返回在方法链接中使用的类

时间:2019-07-18 11:31:03

标签: java

我有以下代码:

class PageMedia {
    public PageMedia upload(){return this;}
    public void insert(){}
}

class PageA {    
    public PageA dosomething(){ return this;}
    public void openMedia(){ return page(PageMedia.class);}
    public PageA save(){ return this;}

}

class PageB {   
    public PageB dosomething(){ return this;}
    public void openMedia(){ return page(PageMedia.class);}
    public PageB save(){ return this;}
}

每个类都是唯一的,每个方法都是唯一的。
需要PageMedia类的方法“插入”返回链中使用的类PageA或PageB。

因此可以执行以下操作:

PageA.open()
    .dosomething()
    .openMedia()
    .upload()
    .insert()
    .save;

PageB.open()
    .dosomething()
    .openMedia()
    .upload()
    .insert()
    .save;

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题。您可以使用以下内容:

interface Page {
    //general Methods ... save, openMedia, ...
}

class PageMedia {

    Page reference;

    public PageMedia(Page reference){
        this.refreence = reference;
    }

    public PageMedia upload(){return this;}
    public Page insert(){ return reference;}
}

class PageA implements Page{    
    public PageA dosomething(){ return this;}
    public PageMedia openMedia(){ return new PageMedia(this);}
    public Page save(){ return this;}

}

致谢, WiPu

答案 1 :(得分:1)

您需要制作一个同时由PageA和PageB实现的接口,并返回一个实现该接口的类的对象。依靠抽象而不是实现。

您应该得到这样的东西:

interface IPage {IPage doSomething(); }
public IPage insert() {return new PageA()}
class PageA implementes IPage
class PageB implementes IPage