DESIGN PATTERN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Adapter Pattern trong Java - Cách triển khai và ví dụ

Trong hướng dẫn này mình sẽ giới thiệu đến các bạn một trong những Pattern thuộc nhóm Structural Patterns (Mẫu thiết kế kiến trúc) đó là Adapter Pattern.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Ở bài viết này mình sẽ giới thiệu sơ qua các khái niệm về Adapter Pattern và cách triển khai nó như thế nào, sau đó sẽ thực hiện chương trình đơn giản với Adapter Pattern.

Adapter Pattern là gì?

Adapter Pattern có chức năng điều chỉnh interface (giao diện) này sang interface khác. Nó hoạt động như một cầu nối giữa hai interface không liên quan, tương tự như scanner hoạt động như một cầu nối giữa paper và computer.

Điều này giúp các class có các interface khác nhau có thể giao tiếp với nhau thông qua một interface trung gian.

Bài viết này được đăng tại [free tuts .net]

Chương trình đơn giản với Adapter Pattern Java

Interface Builder là giao diện chung nhất, nó cung cấp một phương thức chấp nhận các type building và vị trí của nó.

Builder.java
public interface Builder {
    public void build(String type, String location);
}

Interface AdvancedBuilder cung cấp hai phương thức đó là: buildHouse, buildSkyscrapper.

AdvancedBuilder.java
public interface AdvancedBuilder {
    public void buildHouse(String location);
    public void buildSkyscrapper(String location);
}

Tại đây chúng ta sẽ tạo một class HouseBuilder để thực hiện interface AdvancedBuilder.

HouseBuilder.java
public class HouseBuilder implements AdvancedBuilder {
    @Override
    public void buildHouse(String location) {
        System.out.println("Xây dựng một ngôi nhà nằm trong " + location + " khu vực!");
    }
    @Override
    public void buildSkyscrapper(String location) {
    }
}

Cũng tương tự như vậy,chúng ta sẽ tạo thêm một class nữa đó là SkyscrapperBuilder.

SkyscrapperBuilder.java
public class SkyscrapperBuilder implements AdvancedBuilder {
    @Override
    public void buildSkyscrapper(String location) {
        System.out.println("Xây dựng một tòa nhà chọc trời trong " + location + " khu vực!");
    }
    @Override
public void buildHouse(String location) {
    }
}

Ở đây có một adapter part để kết nối hai interface này.

BuilderAdapter.java
public class BuilderAdapter implements Builder {
    AdvancedBuilder advancedBuilder;

    public BuilderAdapter(String type) {
        if(type.equalsIgnoreCase("Nhà")) {
            advancedBuilder = new HouseBuilder();
        } else if(type.equalsIgnoreCase("Tòa nhà chọc trời")) {
            advancedBuilder = new SkyscrapperBuilder();
        }
    }

    @Override
    public void build(String type, String location) {
        if(type.equalsIgnoreCase("Nhà")) {
            advancedBuilder.buildHouse(location);
        } else if(type.equalsIgnoreCase("Tòa nhà chọc trời")) {
            advancedBuilder.buildSkyscrapper(location);
        }
    }
}

Khi Adapter hoạt động, chúng ta có thể sử dụng phương thức của các interfaces để xây dựng các building types.

BuilderImplementation.java
public class BuilderImplementation implements Builder {
    BuilderAdapter builderAdapter;

    @Override
    public void build(String type, String location) {
        if(type.equalsIgnoreCase("Nhà") || type.equalsIgnoreCase("Tòa nhà chọc trời")) {
            builderAdapter = new BuilderAdapter(type);
            builderAdapter.build(type, location);
        } else {
            System.out.println("Loại tòa nhà không hợp lệ.");
        }
    }
}

Cuối cùng chúng ta sẽ tạo một hàm Main để chạy chương trình.

Main.java
public class Main {
    public static void main(String[] args) {
        BuilderImplementation builderImpl = new BuilderImplementation();

        builderImpl.build("Nhà", "trung tâm");
        builderImpl.build("Tòa nhà chọc trời", "trung tâm thành phố");
        builderImpl.build("Tòa nhà chọc trời", "vùng ngoại ô");
        builderImpl.build("Khách sạn", "trung tâm thành phố");
        System.out.println("-------------------------------------------");
        System.out.println("Chương trình này được đăng tại Freetuts.net");
    }
}

Kết quả sau khi chạy chương trình:

adapter pattern JPG

Như vậy là chúng ta đã cùng nhau tìm hiểu về Adapter Pattern là gì? Và cách triển khai nó như thế nào trong Java. Chúc các bạn thực hiện thành công !!!

Cùng chuyên mục:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top