您好我一直在阅读一些类似的主题,但没有一个回答我的问题。有人说你甚至不能这样做,这不是一件好事,因为在那种情况下我无法完成我的课程。
Heres som简单的代码。将每个块视为一个单独的类。
public interface Interface {
void printMessage(String meddelande);
}
public class Model implements Interface {
String message = "hej!";
public static void main(String[] args) {
Model model1 = new Model();
View view1 = new View();
model1.printMessage(model1.message); //Ska jag anropa funktionen såhär ens?
}
public void printMessage(String str) {
}
}
public class View implements Interface {
printMessage(String str) {
}
}
那么,现在如何通过tel方式从模型类中打印这个字符串而不让类知道彼此呢?不允许将model-objekt的引用发送给view-object。 ; (
答案 0 :(得分:0)
我建议您使用依赖注入,例如:
public class Model {
String message = "hej!";
Interface printer;
public void Model(Interface printer) {
printer = printer;
}
public static void main(String[] args) {
Model model1 = new Model(new View());
model1.printMessage(model1.message);
}
public void printMessage(String str) {
printer.printMessage(str);
}
}
答案 1 :(得分:0)
public interface MyInterface {
void printMessage(String str);
}
public class ClassNotifier {
MyInterface mInterface;
public ClassNotifier(MyInterface mInterface) {
this.mInterface = mInterface;
}
public void triggerTheMsg(String msg) {
if (mInterface != null) {
mInterface.printMessage(msg);
}
}
}
public class InformedClass implements MyInterface {
public static void main(String[] args) throws Exception {
InformedClass c = new InformedClass();
ClassNotifier cn = new ClassNotifier(c);
}
@Override
public void printMessage(String newMsg) {
System.out.println("A new msg is here: " + newMsg);
}
}
这被称为回调parttern,类ClassNotifier具有对MyInterface接口的引用,这是impl。通过Informed类来,所以每次ClassNotifier调用方法printMessage时,也会触发Informed类中的方法printMessage。