Chủ Nhật, 19 tháng 2, 2017

design Pattern Observer

-Thuộc nhóm hành vi đối tượng
-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