[Thực hành] Triển khai Facade

Structural Design Pattern

Mục tiêu

Luyện tập triển khai Facade Design Pattern.

Mô tả

Trong phần này, chúng ta sẽ xây dựng một tính năng mô phỏng hoạt động chia sẻ các nội dung lên các hệ thống mạng xã hội.

Khi client chia sẻ một nội dung thì sẽ đồng thời chia sẻ chia sẻ lên nhiều dịch vụ khác nhau như Twitter, Facebook, LinkedIn.

Thao tác chia sẻ lên các mạng xã hội là khác nhau, do đó dẫn đến sự phức tạp đối với client. Do đó, chúng ta sẽ tạo một lớp SocialMediaFacade để giảm thiểu sự phức tạp này. Client đơn giản chỉ cần sử dụng SocialMediaFacade để thực hiện việc chia sẻ.

Sơ đồ lớp:

Hướng dẫn

Bước 1: Tạo interface SocialShare

Interface này quy định các phương thức mà một lớp phải triển khai khi chia sẻ lên các mạng xã hội khác nhau.

public interface SocialShare {
void setMessage(String message);
void share();
}

Bước 2: Tạo các lớp Twitter, Facebook và LinkedIn triển khai interface SocialShare.

  • Lớp Twitter chia sẻ lên Twitter
  • Lớp Facebook chia sẻ lên Facebook
  • Lớp LinkedIn chia sẻ lên LinkedIn
public class Twitter implements SocialShare {
private String message;

@Override
public void setMessage(String message) {
this.message = message;
}

@Override
public void share() {
System.out.println("Sharing to Twitter: " + this.message);
}
}

public class Facebook implements SocialShare {
private String message;

@Override
public void setMessage(String message) {
this.message = message;
}

@Override
public void share() {
System.out.println("Sharing to Facebook: " + this.message);
}
}
public class LinkedIn implements SocialShare {
private String message;

@Override
public void setMessage(String message) {
this.message = message;
}

@Override
public void share() {
System.out.println("Sharing to LinkedIn: " + this.message);
}
}

Bước 3: Tạo lớp SocialMediaFacade

Lớp SocialMediaFacade thực hiện tất cả các thao tác chia sẻ lên các mạng xã hội khác nhau.

public class SocialMediaFacade {
private Twitter twitter;
private Facebook facebook;
private LinkedIn linkedIn;

public SocialMediaFacade(Twitter twitter, Facebook facebook, LinkedIn linkedIn) {
this.twitter = twitter;
this.facebook = facebook;
this.linkedIn = linkedIn;
}

public void share(String message){
this.twitter.setMessage(message);
this.facebook.setMessage(message);
this.linkedIn.setMessage(message);
this.twitter.share();
this.facebook.share();
this.facebook.share();
}
}

Bước 4: Tạo lớp Client

Lớp Client sử dụng SocialMediaFacade để chia sẻ lên các mạng xã hội.

public class Client {
public void share(String message){
SocialMediaFacade socialMediaFacade = new SocialMediaFacade(new Twitter(), new Facebook(), new LinkedIn());
socialMediaFacade.share(message);
}
}

Bước 5: Chạy ứng dụng

public static void main(String[] args) {
Client client = new Client();
client.share("This is a post");
}

Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Leave a Reply

Your email address will not be published. Required fields are marked *