gpt4 book ai didi

java - 当抽象产品是泛型类时工厂模式

转载 作者:行者123 更新时间:2023-12-01 18:50:53 25 4
gpt4 key购买 nike

我的项目的第一部分是构建一个超图

这是一个快速绘制的UML图enter image description here

顶点类

public abstract class Vertex <T>{

int vertexId ;
T vertexValue ;
public abstract T computeVertexValue();
}

图像顶点类

public class ImageVertex extends Vertex<Map<String, Instance>>{


public ImageVertex(int id ) {
this.vertexId=id;
}

@Override
public Map<String, Instance> computeVertexValue(){
return null;
}
}

抽象顶点工厂

public abstract class AbstractVertexFactory {

public abstract Vertex createVertex(int id);

public Vertex produceVertex(int id) {

Vertex vertex = createVertex(id);
vertex.computeVertexValue();
return vertex;
}
}

ImageFactory类

public class ImageFactory extends AbstractVertexFactory {

@Override
public Vertex createVertex(int id) {
// TODO Auto-generated method stub
return new ImageVertex(id);
}
}

模拟器

public class ImageFactorySimulator {

/**
* @param args
*/
public static void main(String[] args) {


AbstractVertexFactory imFactory= new ImageFactory();

ImageVertex im = (ImageVertex) imFactory.createVertex(0);

}

}

模拟器中cast的使用已被屏蔽我怎样才能避免它?

最佳答案

你可以使用

public abstract class AbstractVertexFactory <T extends Vertex> {
public abstract T createVertex(int id);
}

public class ImageFactory extends AbstractVertexFactory<ImageVertex> {

@Override
public ImageVertex createVertex(int id) {
// TODO Auto-generated method stub
return new ImageVertex(id);
}
}

关于java - 当抽象产品是泛型类时工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968989/

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