Bây giờ mình có 2 thiết bị đại diện cho 2 đối tượng độc lập hoàn toàn là con điện thoại và cái headphone.
2 cái này có cấu tạo được dấu kín bên trong vỏ -> nó là 2 đối tượng thể hiện tính bao đóng.
Con điện thoại thì phát tín hiệu cho headphone nhưng nó không biết cụ thể là con headphone nào và con headphone cũng không biết được cắm vào con điện thoại nào. Làm sao giờ ??
Thế nên nhà sx điện thoại đã có chuẩn audio 3.5 để truyền tín hiệu nhạc qua-> tương tự ta khai báo 1 kiểu delegate.
public delegate void ChuanAudio3_5(Tinhieunhac tinhieu);
để truyền tín hiệu nhạc ra ngoài thì con điện thoại phải bố trí 1 cổng 3.5-> ta khai báo 1 delegate bên trong con điện thoại.
public class DienThoai{
public chuanaudio3_5 CongAudio3_5;
}
Bây giờ phần nghe nhạc trên điện thoại sẽ đẩy tín hiệu nhạc ra ngoài-> Ta đẩy dữ lieu qua delegate
public class DienThoai{
public chuanaudio3_5 CongAudio3_5;
private void PhatNhac(){
if(CongAudio3_5!=null) // kiểm tra có headphone cắm vào không đã
CongAudio3_5(nhac);
}
}
Xong phần điện thoại. đến phần Headphone.
đương nhiên headphone cũng phải có chức năng lấy được nhạc theo chuẩn 3.5 và phát ra loa.
public class Headphone{
public void DaucamAudio3_5(Tinhieunhac tinhieu){ // tương tụ chuẩn 3.5 nhé thì mới nhận được tín hiệu
Loa.PhatNhac(tinhieu); // <-- tinhieu là cái mà điện thoại đã chuyển qua cổng 3.5
}
}
Headphone muốn lấy tín hiệu thì đương nhiên cũng phải kết nối vào điện thoại qua cổng 3.5. Ta xác lập kết nối ở một chỗ nào đó.
void KetNoi(){
DienThoai dienthoai = new DienThoai(); // có 1 cái điện thoại
Headphone headphone =new Headphone(); // có 1 cái headphone
dienthoai.CongAudio3_5 = headphone.DaucamAudio3_5; // kết nối
dienthoai.PhatNhac(); // kết nối xong thì phát nhạc thôi.
}
–> Con điện thoại đã ủy quyền cho con Headphone phát tín hiệu nhạc ( dữ lieu) mà con điện thoại đã truyền qua cổng 3.5 (delegate). Tiếng ở headphone được phát tức thời, còn kết cấu 2 thằng cũng được dấu kín và toàn vẹn (bao đóng), 2 thằng cũng không hề biết nhau.