бет 2/4 Дата 21.04.2023 өлшемі 221,44 Kb. #85093 түрі Сабақ
Байланысты:
Lab-9 Zhaksylykov Berik
Observer паттерін жүзеге асыратын мысал ойластырыңыздар. Ойластырған мысалыңыздың uml схемасы мен программа кодын көрсетіп, оны қорғайсыздар. Ойластырған мысалыңыздың uml схемасы дұрыс болса – 0.2 балл, программа коды дұрыс болса – 0.5 балл, дұрыс қорғасаңыз – 0.5 балл.
ЕСКЕРТУ: ойластырған мысалыныздың коды және uml схемасы басқа студенттің жұмысымен бірдей болмауы керек. Бірдей болған жағдайда ол жұмыс қабылданбайды.
package Task2;
import java.util.ArrayList;
import java.util.List;
interface Observer {
void update(int result);
}
interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
class Calculator implements Subject {
private List observers = new ArrayList<>();
private int result;
public void add(int num1, int num2) {
result = num1 + num2;
notifyObservers();
}
public void subtract(int num1, int num2) {
result = num1 - num2;
notifyObservers();
}
public void multiply(int num1, int num2) {
result = num1 * num2;
notifyObservers();
}
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(result);
}
}
}
class Display implements Observer {
private int result;
@Override
public void update(int result) {
this.result = result;
display();
}
private void display() {
System.out .println("Result: " + result);
}
}
public class Main_2 {
public static void main(String[] args) {
Calculator calculator = new Calculator();
Display display = new Display();
calculator.registerObserver(display);
calculator.add(10, 5);
calculator.subtract(10, 5);
calculator.multiply(10, 5);
calculator.removeObserver(display);
}
}
Достарыңызбен бөлісу: