Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/main/java/edu/iful/oop/patterns/observer/WeatherData.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@ public class WeatherData implements Subject {
public WeatherData() {
// ToDo: Ініціалізуйте список Передплатників порожнім списком
// (використайте, наприклад, ArrayList).
this.observers = new ArrayList<>();
}

@Override
public void registerObserver(Observer o) {
// ToDo: Додайте нового Передплатника до списку.
this.observers.add(o);
}

@Override
Expand All @@ -34,10 +36,12 @@ public void removeObserver(Observer o) {
@Override
public void notifyObservers() {
// ToDo: Передайте нові дані метеоспостережень кожному з Передплатників в списку за допомогою метода 'update()'.
this.observers.forEach(observer -> observer.update(getTemperature(), getHumidity(), getPressure()));
}

public void measurementsChanged() {
// ToDo: Повідмте своїх Передплатників про зміну даних.
notifyObservers();
}

public void setMeasurements(float temperature, float humidity, float pressure) {
Expand Down
8 changes: 6 additions & 2 deletions src/main/java/edu/iful/oop/patterns/singleton/Singleton.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,19 @@
public class Singleton {

// Оголосіть приватну статичну змінну INSTANCE типу Singleton.
private static Singleton INSTANCE;

// Змініть режим доступу конструктора з public на private.
public Singleton() {
private Singleton() {
System.out.println("Constructor Instance " + toString());
}

public static Singleton getInstance() {
// Замість створення нового об'єкта Singleton
// ініціалізуйте (один раз!) змінну INSTANCE і повертайте її значення.
return new Singleton();
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
return INSTANCE;
}
}
5 changes: 5 additions & 0 deletions src/main/java/edu/iful/oop/patterns/strategy/DecoyDuck.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package edu.iful.oop.patterns.strategy;

import edu.iful.oop.patterns.strategy.behavior.FlyNoWay;
import edu.iful.oop.patterns.strategy.behavior.Squeak;

/**
* Качка примнка
*/
Expand All @@ -8,5 +11,7 @@ public class DecoyDuck extends Duck {
public DecoyDuck() {
// Ініціалізуйте поведінку качки-приманки:
// ця качка не літатє і пищить.
setFlyBehavior(new FlyNoWay());
setQuackBehavior(new Squeak());
}
}
17 changes: 14 additions & 3 deletions src/main/java/edu/iful/oop/patterns/strategy/Duck.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package edu.iful.oop.patterns.strategy;

import edu.iful.oop.patterns.strategy.behavior.FlyBehavior;
import edu.iful.oop.patterns.strategy.behavior.QuackBehavior;

/**
* <p>
* Джо працює на компанію, що випускає надзвичайно
Expand Down Expand Up @@ -29,7 +32,8 @@ public abstract class Duck {
// Тут необхідно оголосити дві зсилочні змінні з типами інерфейсів поведінки.
// Ці змінні наслідуються всіма підкласами Duck.
// Добавте 'сеттери' для цих полів.

private FlyBehavior flyBehavior;
private QuackBehavior quackBehavior;

public String swim() {
return SWIM_MESSAGE;
Expand All @@ -41,12 +45,19 @@ public String display() {

public String performQuack() {
// Замінити оператор 'return null;' на делегування операції класа поведінки.
return null;
return quackBehavior.quack();
}

public String performFly() {
// Замінити оператор 'return null;' на делегування операції класа поведінки.
return null;
return flyBehavior.fly();
}

public void setFlyBehavior(FlyBehavior flyBehavior) {
this.flyBehavior = flyBehavior;
}

public void setQuackBehavior(QuackBehavior quackBehavior) {
this.quackBehavior = quackBehavior;
}
}
5 changes: 5 additions & 0 deletions src/main/java/edu/iful/oop/patterns/strategy/MallardDuck.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package edu.iful.oop.patterns.strategy;

import edu.iful.oop.patterns.strategy.behavior.FlyWithWings;
import edu.iful.oop.patterns.strategy.behavior.Quack;

/**
* Клас Дика качкаю
*/
Expand All @@ -8,5 +11,7 @@ public class MallardDuck extends Duck {
public MallardDuck() {
// Ініціалізуйте поведінку дикої качки:
// дика качка вміє літати і крякати.
setFlyBehavior(new FlyWithWings());
setQuackBehavior(new Quack());
}
}
5 changes: 5 additions & 0 deletions src/main/java/edu/iful/oop/patterns/strategy/RedHeadDuck.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package edu.iful.oop.patterns.strategy;

import edu.iful.oop.patterns.strategy.behavior.FlyWithWings;
import edu.iful.oop.patterns.strategy.behavior.Quack;

/**
* Ще одна качка із всесвіту качок.
*/
Expand All @@ -8,5 +11,7 @@ public class RedHeadDuck extends Duck {
public RedHeadDuck() {
// Ініціалізуйте поведінку качки:
// ця качка вміє літати і крякати.
setFlyBehavior(new FlyWithWings());
setQuackBehavior(new Quack());
}
}
5 changes: 5 additions & 0 deletions src/main/java/edu/iful/oop/patterns/strategy/RubberDuck.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package edu.iful.oop.patterns.strategy;

import edu.iful.oop.patterns.strategy.behavior.FlyNoWay;
import edu.iful.oop.patterns.strategy.behavior.MuteQuack;

/**
* Гумова качечка.
*/
Expand All @@ -8,5 +11,7 @@ public class RubberDuck extends Duck {
public RubberDuck() {
// Ініціалізуйте поведінку гумової качки:
// ця качка не літатє і мовчить.
setFlyBehavior(new FlyNoWay());
setQuackBehavior(new MuteQuack());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ public class FlyNoWay implements FlyBehavior {

@Override
public String fly() {
return null;
return FLY_MESSAGE;
}
}