Kısa öykü: Bir postacıdan eve gittikten sonra teslim edilecek adresin bulunduğu kapakları (mektuplar, belgeler, çekler, hediye kartları, başvuru, aşk mektubu) almaları istenir.
Kapak olmadığını varsayalım ve postacıdan evden sonra eve gitmesini ve her şeyi almasını ve diğer insanlara teslim etmesini isteyin, postacı kafası karışabilir.
Öyleyse kapakla daha iyi sarın (hikayemizde arayüz) o zaman işini iyi yapacak.
Şimdi postacının işi sadece kapakları almak ve teslim etmektir (kapakta ne olduğunu rahatsız etmez).
Bir tür oluşturun interface
Gerçek olmayan , ancak gerçek türle uygulayın.
Arabirime oluşturmak, bileşenlerinizin kodun geri kalanına kolayca sığması anlamına gelir
Size bir örnek vereyim.
aşağıdaki gibi AirPlane arayüzüne sahipsiniz.
interface Airplane{
parkPlane();
servicePlane();
}
Denetleyici sınıfınızdaki gibi uçaklarınız olduğunu varsayalım
parkPlane(Airplane plane)
ve
servicePlane(Airplane plane)
programınızda uygulanmaktadır. Kodunuzu KIRMAK olmayacak . Yani, argümanları kabul ettiği sürece değişmeme gerek yokAirPlane
.
Gerçek tip rağmen herhangi Airplane kabul edeceğinden, flyer
, highflyr
,fighter
, vb
Ayrıca, bir koleksiyonda:
List<Airplane> plane;
// Tüm uçaklarınızı alacak.
Aşağıdaki örnek anlayışınızı netleştirecektir.
Onu uygulayan bir savaş uçağınız var, yani
public class Fighter implements Airplane {
public void parkPlane(){
// Specific implementations for fighter plane to park
}
public void servicePlane(){
// Specific implementatoins for fighter plane to service.
}
}
HighFlyer ve diğer clasess için aynı şey:
public class HighFlyer implements Airplane {
public void parkPlane(){
// Specific implementations for HighFlyer plane to park
}
public void servicePlane(){
// specific implementatoins for HighFlyer plane to service.
}
}
Şimdi denetleyicinizin AirPlane
birkaç kez kullanarak sınıflarını düşünün ,
Controller sınıfınızın aşağıdaki gibi ControlPlane olduğunu varsayalım,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
İşte yeni AirPlane
tip örneklerinizi istediğiniz kadar yapabilirsiniz ve ControlPlane
sınıf kodunu değiştirmediğiniz gibi sihir gelir .
Bir örnek ekleyebilirsiniz ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
Önceden oluşturulan türlerin örneklerini de kaldırabilirsiniz.