Skip to content

Commit

Permalink
observer Finished
Browse files Browse the repository at this point in the history
  • Loading branch information
RononoaZoro committed Sep 15, 2019
1 parent 7d185b0 commit ee14a69
Show file tree
Hide file tree
Showing 34 changed files with 759 additions and 160 deletions.
10 changes: 10 additions & 0 deletions comprehensive/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,15 @@
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

40 changes: 0 additions & 40 deletions comprehensive/src/main/java/com/luo/observer/impl/WeatherData.java

This file was deleted.

12 changes: 0 additions & 12 deletions comprehensive/src/main/java/com/luo/observer/inter/Observer.java

This file was deleted.

16 changes: 0 additions & 16 deletions comprehensive/src/main/java/com/luo/observer/inter/Subject.java

This file was deleted.

14 changes: 14 additions & 0 deletions comprehensive/src/main/java/com/luo/observer/simple/Example.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.luo.observer.simple;

/**
* @author luoxuzheng
* @create 2019-09-15 19:39
**/
public class Example {

public static void main(String[] args) {
Subject subject = new SimpleSubject();
Observer observer = new SimpleObserver(subject);
((SimpleSubject) subject).setValue(1);
}
}
16 changes: 16 additions & 0 deletions comprehensive/src/main/java/com/luo/observer/simple/Observer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.luo.observer.simple;

/**
* 观察者
*
* @author luoxuzheng
* @create 2019-09-15 19:43
**/
public interface Observer {

/**
* 通知
* @param value
*/
void update(Integer value);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.luo.observer.simple;

/**
* @author luoxuzheng
* @create 2019-09-15 19:47
**/
public class SimpleObserver implements Observer {

//通知数据
private Integer value;
private Subject subject;

public SimpleObserver(Subject subject) {
this.subject = subject;
subject.registerObserver(this);
}

@Override
public void update(Integer value) {
this.value = value;
display();
}

public void display() {
System.out.println("value:" + value);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.luo.observer.simple;

import java.util.ArrayList;
import java.util.List;

/**
* @author luoxuzheng
* @create 2019-09-15 19:47
**/
public class SimpleSubject implements Subject {

private List<Observer> observers;
private Integer value = 0;

public SimpleSubject() {
this.observers = new ArrayList<>();
}

@Override
public void registerObserver(Observer observer) {
this.observers.add(observer);
}

@Override
public void removeObserver(Observer observer) {
int index = this.observers.indexOf(observer);
if (index >= 0)
this.observers.remove(observer);
}

@Override
public void notifyObservers() {
for (Observer observer : this.observers) {
observer.update(value);
}
}

public void setValue(Integer value) {
this.value = value;
notifyObservers();
}
}
28 changes: 28 additions & 0 deletions comprehensive/src/main/java/com/luo/observer/simple/Subject.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.luo.observer.simple;

/**
* 被观察者
*
* @author luoxuzheng
* @create 2019-09-15 19:42
**/
public interface Subject {

/**
* 注册观察者
* @param observer
*/
void registerObserver(Observer observer);

/**
* 移除观察者
* @param observer
*/
void removeObserver(Observer observer);

/**
* 通知观察者
*/
void notifyObservers();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.luo.observer.simpleobservable;


import java.util.Observer;

/**
* @author luoxuzheng
* @create 2019-09-15 19:39
**/
public class Example {

public static void main(String[] args) {
SimpleObservable observable = new SimpleObservable();
Observer observer = new SimpleObserver(observable);
observable.setValue(1);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.luo.observer.simpleobservable;

import java.util.Observable;
import java.util.Observer;

/**
* @author luoxuzheng
* @create 2019-09-15 20:02
**/
public class SimpleObservable extends Observable {
private Integer value;

public void setValue(Integer value){
this.value = value;
setChanged();
notifyObservers(value);
}

public Integer getValue() {
return value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.luo.observer.simpleobservable;

import java.util.Observable;
import java.util.Observer;

/**
* 观察者
*
* @author luoxuzheng
* @create 2019-09-15 20:01
**/
public class SimpleObserver implements Observer {
private Integer value;
private Observable observable;

public SimpleObserver(Observable observable) {
this.observable = observable;
this.observable.addObserver(this);
}

@Override
public void update(Observable o, Object arg) {

//1、被通知
this.value = (Integer) arg;
display();

//2、主动拉取
if(o instanceof SimpleObservable){
this.value = ((SimpleObservable) o).getValue();
display();
}
}

public void display() {
System.out.println("value:" + value);
}

}
Loading

0 comments on commit ee14a69

Please sign in to comment.