Это в основном простой производитель - потребительское приложение.
Пример кода следующий:
public class MyMainClass extends Application {
// blocking queue that will be shared among my prcesses
BlockingQueue bq;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
// parameters I wont the Thread passes to the server socket
TextArea parameters = new TextArea("parameters-for-the-server");
// setting the Producer button
Button btnProducer = new Button();
btnProducer.setText("Start Producer");
btnProducer.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
/* ReadSocket connects to a web sockets,
reads strings and saves them into a shared blocking queue: bq*/
ReadSocket rs = new ReadSocket(bq);
new Thread(rs).start();
}
// setting the Consumer button
Button btnConsumer = new Button();
btnConsumer.setText("Start Consumer");
btnConsumer.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
/* ReadSocket connects to a web sockets,
reads strings and saves them into a shared blocking queue: bq*/
Consumer c = new Consumer(bq);
new Thread(c).start();
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
Мой профессор сказал, что я должен передать значения в конструкторе, если я хочу, чтобы они были доступны другим объектам.
Мой ReadSocket
должен выглядеть примерно так:
public class ReadSocket{
BlockingQueue bq;
ReadSocket(bq){
this.bq = bq;
// more code
}
/*I need here parameters in order to create an object o
that will be used to create another object ms*/
MyObject o = new MyObjext("parameters-for-the-server");
MyServer ms = new MyServer(o);
}
Значит ли это, что я должен передать свои значения вроде:
ReadSocket rs = new ReadSocket(bq, parameters.getText());
даже если ReadSocket
не использует их напрямую, но создает объект на основе parameters
? Это правильно делать?
Есть ли другой лучший способ?