Facade Design Pattern in Android
What is Facade Pattern?
Facade pattern describes a higher-level interface that makes sub-system easier to use.By using facade pattern hides all the complexities of the system and it creates an interface which one client can access. Basically we use facade pattern when you want to provide simple interface to a complex sub-system.
Please check-out the bellow flow-chart, we will implement facade based pattern by following this flowchart:
Now we will do some example, which will help you more to understand.
Firstly we will create an interface name MobileDistributor.java
In this interface we will create two method, name mobileModelNo() and mobilePrice().
MobileDistributor.java
public interface MobileDistributor {
public void mobileModelNo();
public void mobilePrice();
}
public void mobileModelNo();
public void mobilePrice();
}
Now we will create three concrete class name iPhone,Nexus and Sony. These class will implement MobileDistributor interface.
Creating iPhone class with implementation as follows:
public class iPhone implements MobileDistributor{
@Override
public void mobileModelNo() {
System.out.println("IphoneModel: iPhone X");
}
@Override
public void mobilePrice() {
System.out.println("iPhone X Price Rs. 85000");
}
}
@Override
public void mobileModelNo() {
System.out.println("IphoneModel: iPhone X");
}
@Override
public void mobilePrice() {
System.out.println("iPhone X Price Rs. 85000");
}
}
Next we will create Nexus class with following implementation:
public class Nexus implements MobileDistributor{
@Override
public void mobileModelNo() {
System.out.println("Nexus Model: Nexus6");
}
@Override
public void mobilePrice() {
System.out.println("Nexus6 Price Rs. 22,000");
}
}
@Override
public void mobileModelNo() {
System.out.println("Nexus Model: Nexus6");
}
@Override
public void mobilePrice() {
System.out.println("Nexus6 Price Rs. 22,000");
}
}
and the last one we will create Sony class with implementation as follows:
public class Sony implements MobileDistributor{
@Override
public void mobileModelNo() {
System.out.println("Sony Model: Sony Xpheria");
}
@Override
public void mobilePrice() {
System.out.println("Sony Xpheria price Rs. 15,000");
}
}
@Override
public void mobileModelNo() {
System.out.println("Sony Model: Sony Xpheria");
}
@Override
public void mobilePrice() {
System.out.println("Sony Xpheria price Rs. 15,000");
}
}
Now we create Seller class which will use MobileDistributor interface , by using this interface we will access mobile price and mobile model number. Class with implementation as follows:
public class Seller {
private MobileDistributor iPhone,nexus,sony;
public Seller(){
iPhone = new iPhone();
nexus = new Nexus();
sony = new Sony();
}
public void iPhoneMobileSale(){
iPhone.mobileModelNo();
iPhone.mobilePrice();
}
public void nexusMobileSale(){
nexus.mobileModelNo();
nexus.mobilePrice();
}
public void sonyMobileSale(){
sony.mobileModelNo();
sony.mobilePrice();
}
}
private MobileDistributor iPhone,nexus,sony;
public Seller(){
iPhone = new iPhone();
nexus = new Nexus();
sony = new Sony();
}
public void iPhoneMobileSale(){
iPhone.mobileModelNo();
iPhone.mobilePrice();
}
public void nexusMobileSale(){
nexus.mobileModelNo();
nexus.mobilePrice();
}
public void sonyMobileSale(){
sony.mobileModelNo();
sony.mobilePrice();
}
}
Now inside main activity, we will create a button , on button click will access price of all three mobile models.
Seller s = new Seller();
//For iPhone sale
s.iPhoneMobileSale();
//For nexus sale
s.nexusMobileSale();
//For Sony sale
s.sonyMobileSale();
//For iPhone sale
s.iPhoneMobileSale();
//For nexus sale
s.nexusMobileSale();
//For Sony sale
s.sonyMobileSale();
Output will be as follows:
IphoneModel: iPhone X
iPhone X Price Rs. 85000
Nexus Model: Nexus6
Nexus6 Price Rs. 22,000
Sony Model: Sony Xpheria
Sony Xpheria price Rs. 15,000
No comments:
Post a Comment