เนื่องจากหลักการแยกอินเทอร์เฟซแนะนำว่าลูกค้าไม่ควรถูกบังคับให้ขึ้นอยู่กับวิธีการที่ไม่ได้ใช้ดังนั้นลูกค้าไม่ควรใช้วิธีการที่ว่างเปล่าสำหรับวิธีการอินเทอร์เฟซมิฉะนั้นวิธีการอินเทอร์เฟซนี้
แต่วิธีการที่เป็นรูปธรรม? ฉันควรแยกวิธีการที่ลูกค้าไม่ทุกคนจะใช้หรือไม่ พิจารณาคลาสต่อไปนี้:
public class Car{
....
public boolean isQualityPass(){
...
}
public int getTax(){
...
}
public int getCost(){
...
}
}
public class CarShop{
...
public int getCarPrice(int carId){
Car car=carList[carId];
int price=car.getTax() + car.getCost()... (some formula);
return price;
}
}
ที่โค้ดด้านบน CarShop ไม่ได้ใช้วิธี isQualityPass () ใน Car เลยฉันควรแยก isQualityPass () ออกเป็นคลาสใหม่:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
เพื่อลดข้อต่อของ CarShop เพราะฉันคิดว่าถ้า isQualityPass () ต้องการการพึ่งพาพิเศษเช่น:
public boolean isQualityPass(){
HttpClient client=...
}
CarShop จะขึ้นอยู่กับ HttpClient แม้ว่ามันจะไม่เคยใช้ HttpClient ก็ตาม ดังนั้นคำถามของฉันคือ: ตามหลักการของการแยกอินเตอร์เฟสฉันควรแยกวิธีที่เป็นรูปธรรมที่ไม่ใช่ลูกค้าทุกคนที่จะใช้เพื่อให้วิธีการเหล่านั้นขึ้นอยู่กับลูกค้าเฉพาะเมื่อลูกค้าใช้จริงเพื่อลดข้อต่อ?
Car
ชั้นเรียนที่คุณไม่ต้องการ (ทั้งหมด) ผู้ใช้สามารถรู้เกี่ยวกับการสร้าง (มากกว่าหนึ่ง) อินเตอร์เฟซที่Car
ดำเนินคลาสซึ่งประกาศเพียงวิธีการที่เป็นประโยชน์ในบริบทของอินเตอร์เฟซ