-Phản ứng lại sự thay đổi của 1 đối tượng trong cùng 1 nhóm
1.Tạo InterFace
public interface IStudentObserver {
public void Obclass( ObserverClass observerClass);
public void setchucvu(String chucvu);
public String getchucvu();
public void setName(String name);
public String getName();
}
2.Tạo 1 lớp phản ứng lại các thành viên (giống radioButtonGroup)
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Obverser;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Xuanlinh
*/
public class ObserverClass {
private List<IStudentObserver> listhocsinh = new ArrayList<>();
public void addStudent(IStudentObserver student) {
listhocsinh.add(student);
}
public void DeleteStudent(IStudentObserver student) {
listhocsinh.remove(student);
}
public void Update() {
for (int i = 0; i < listhocsinh.size(); i++) {
if (listhocsinh.get(i).getchucvu().equals("LT")) {
for (IStudentObserver s : listhocsinh) {
if (!s.getName().equals(listhocsinh.get(i).getName())) {
s.setchucvu("Thanh vien");
}
}
break;
}
}
}
public void getInfo(){
Update();
for(IStudentObserver s : listhocsinh)
System.out.println("\nTen hoc sinh : "+s.getName()+"chuc vu : "+s.getchucvu());
}
}
1.Tạo 1 lớp thành viên (giống radioButton)
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Obverser;
/**
*
* @author Xuanlinh
*/
public class Student implements IStudentObserver{
public Student(String name)
{
this.name=name;
}
@Override
public void Obclass( ObserverClass observerClass) {
observerClass.addStudent(this);
}
String chucvu,name;
@Override
public void setchucvu(String chucvu) {
this.chucvu=chucvu;
}
@Override
public String getchucvu() {
return chucvu;
}
@Override
public void setName(String name) {
this.name=name;
}
@Override
public String getName() {
return name;
}
}
------------Main------------
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Obverser;
/**
*
* @author Xuanlinh
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ObserverClass observerClass=new ObserverClass();
Student s1=new Student("S1");
Student s2=new Student("S2");
Student s3=new Student("S3");
Student s4=new Student("S4");
s1.setchucvu("HV");
s2.setchucvu("cf");
s3.setchucvu("aa");
s4.setchucvu("LT");
s1.Obclass(observerClass);
s2.Obclass(observerClass);
s3.Obclass(observerClass);
s4.Obclass(observerClass);
observerClass.getInfo();
}
}
Không có nhận xét nào:
Đăng nhận xét