Facade模式表示, “只是为子系统中的一组接口提供统一且简化的接口, 因此它对客户端隐藏了子系统的复杂性”。
换句话说, Facade Pattern描述了一个更高级别的接口, 该接口使子系统更易于使用。
实际上, 每个抽象工厂都是一种外观。
外观模式的优势
- 它使客户端免受子系统组件的复杂性的影响。
- 它促进子系统与其客户之间的松散耦合。
外观模式的用法:
它用于:
- 当你想提供到复杂子系统的简单接口时。
- 当客户端和抽象的实现类之间存在多个依赖项时。
外观模式的例子
让我们通过上面的UML图了解外观设计模式的示例。
用于外观模式的UML:
以上UML的实现:
步骤1
创建一个MobileShop界面。
public interface MobileShop {
public void modelNo();
public void price();
}
第2步
创建一个将实现Mobileshop接口的Iphone实现类。
public class Iphone implements MobileShop {
@Override
public void modelNo() {
System.out.println(" Iphone 6 ");
}
@Override
public void price() {
System.out.println(" Rs 65000.00 ");
}
}
第三步
创建将实现Mobileshop接口的Samsung实现类。
public class Samsung implements MobileShop {
@Override
public void modelNo() {
System.out.println(" Samsung galaxy tab 3 ");
}
@Override
public void price() {
System.out.println(" Rs 45000.00 ");
}
}
步骤4
创建一个将实现Mobileshop接口的Blackberry实现类。
public class Blackberry implements MobileShop {
@Override
public void modelNo() {
System.out.println(" Blackberry Z10 ");
}
@Override
public void price() {
System.out.println(" Rs 55000.00 ");
}
}
第5步
创建一个将使用MobileShop界面的ShopKeeper具体类。
public class ShopKeeper {
private MobileShop iphone;
private MobileShop samsung;
private MobileShop blackberry;
public ShopKeeper(){
iphone= new Iphone();
samsung=new Samsung();
blackberry=new Blackberry();
}
public void iphoneSale(){
iphone.modelNo();
iphone.price();
}
public void samsungSale(){
samsung.modelNo();
samsung.price();
}
public void blackberrySale(){
blackberry.modelNo();
blackberry.price();
}
}
第6步
现在, 创建一个可以通过ShopKeeper从MobileShop购买手机的客户端。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class FacadePatternClient {
private static int choice;
public static void main(String args[]) throws NumberFormatException, IOException{
do{
System.out.print("========= Mobile Shop ============ \n");
System.out.print(" 1. IPHONE. \n");
System.out.print(" 2. SAMSUNG. \n");
System.out.print(" 3. BLACKBERRY. \n");
System.out.print(" 4. Exit. \n");
System.out.print("Enter your choice: ");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
choice=Integer.parseInt(br.readLine());
ShopKeeper sk=new ShopKeeper();
switch (choice) {
case 1:
{
sk.iphoneSale();
}
break;
case 2:
{
sk.samsungSale();
}
break;
case 3:
{
sk.blackberrySale();
}
break;
default:
{
System.out.println("Nothing You purchased");
}
return;
}
}while(choice!=4);
}
}
输出量
========= Mobile Shop ============
1. IPHONE.
2. SAMSUNG.
3. BLACKBERRY.
4. Exit.
Enter your choice: 1
Iphone 6
Rs 65000.00
========= Mobile Shop ============
1. IPHONE.
2. SAMSUNG.
3. BLACKBERRY.
4. Exit.
Enter your choice: 2
Samsung galaxy tab 3
Rs 45000.00
========= Mobile Shop ============
1. IPHONE.
2. SAMSUNG.
3. BLACKBERRY.
4. Exit.
Enter your choice: 3
Blackberry Z10
Rs 55000.00
========= Mobile Shop ============
1. IPHONE.
2. SAMSUNG.
3. BLACKBERRY.
4. Exit.
Enter your choice: 4
Nothing You purchased
评论前必须登录!
注册