Nội dung
Mục tiêu
Luyện tập thiết kế và triển khai interface ‘Comparator’.
Điều kiện- Triển khai interface ‘Comparator’
Biết cách thiết kế và triển khai interface
Mô tả
Ở bài thực hành trước đã tiến hành cho các lớp hình học triển khai interface Comparable để hỗ trợ so sánh “hơn, kém, bằng”.
Phương án này không phù hợp khi mà vì lý do gì đó, không thể thay đổi các lớp đã có sẵn, cũng như không thể tùy ý tạo ra và sử dụng các lớp kế thừa mới.
Trong trường hợp đó, ta có thể sử dụng những đối tượng thuộc những lớp mà có triển khai interface Comparator và phương thức compare() của nó, để phục phụ việc so sánh, như hướng dẫn dưới đây.
Gợi ý triển khai một Comparator có khả năng so sánh các Circle (hình tròn)
Học viên tự triển khai Comparator cho các lớp hình học còn lại.
Hướng dẫn
Bước 1: Tạo một lớp CircleComparator triển khai interface Comparator:
include "Circle.php"; include "Comparator.php"; class CircleComparator implements Comparator { public function compare($circleOne, $circleTwo) { $radiusOne = $circleOne->getRadius(); $radiusTwo = $circleTwo->getRadius(); if ($radiusOne > $radiusTwo) { return 1; } else if($radiusOne < $radiusTwo) { return -1; } else { return 0; } } }
Bước 2: Tạo chương trình để kiểm thử CircleComparatorTest
include "CircleComparator.php"; $circleOne = new Circle("circleOne", 6); $circleTwo = new Circle("circleTwo", 4); $circleComparator = new CircleComparator(); var_dump($circleComparator->compare($circleOne, $circleTwo));
Chạy chương trình và quan sát kết quả.
Mã nguồn tham khảo: https://github.com/codegym-vn/php-interface-comparable.git
Trên đây CodeGym đã cùng với bạn luyện tập thiết kế và triển khai interface. Hãy chụp ảnh màn hình và nộp bài thực hành của bạn trên CodeGymX để cùng nhau luyện tập nhé!
0 Lời bình