我有一个所谓的“操作” 抽象类,这个类有一个名为“准备”抽象方法。抽象类,面向对象的设计模式
public abstract class Operation {
public abstract void prepare() throws Exception;
public abstract void run() throws Exception;
// other stuff here that's not abstract
public void printHelloWorld() {
System.out.println("Hello World!");
}
}
唯一的问题是,一些事情是“操作”( 一些类,扩展操作)需要的参数准备(一些 需要整型,有的需要字符串,有的需要更复杂的数据类型。 。所以这并不总是一个int)
public class Teleportation extends Operation {
@Override
public void prepare(int capacityRequired) throws Exception {
// do stuff
}
@Override
public void run() throws Exception {
}
}
我用它来实现这一 以及如何设置什么OOP模式了这个代码?
编辑:
理想情况下,我要准备和运行操作是这样的:
for (Operation operation : operations) {
operation.prepare();
operation.run();
}
假设我用这个解决方案:
public class Teleportation extends Operation {
private int cReq;
public void setCapacityRequired(int cReq) {
this.cReq = cReq;
}
@Override
public void prepare() throws Exception {
// I can do the preparation stuff
// since I have access to cReq here
}
@Override
public void run() throws Exception {
}
}
然后 - 我不知道是否是可以避免这种情况:
for (Operation operation : operations) {
if (operation.getClass().isInstanceOf(Teleporation.class)) {
((Teleporation)operation).setCapacityRequired(5);
}
operation.prepare();
operation.run();
}
传递参数到'Teleportation'构造? –
你需要更具体一些,这里可以有n个答案。 – Lokesh
我想象的扩展操作和需要参数准备的类不总是需要一个int? – Julien