个性化阅读
专注于IT技术分析

外观模式

Facade模式表示, “只是为子系统中的一组接口提供统一且简化的接口, 因此它对客户端隐藏了子系统的复杂性”。

换句话说, Facade Pattern描述了一个更高级别的接口, 该接口使子系统更易于使用。

实际上, 每个抽象工厂都是一种外观。


外观模式的优势

  • 它使客户端免受子系统组件的复杂性的影响。
  • 它促进子系统与其客户之间的松散耦合。

外观模式的用法:

它用于:

  • 当你想提供到复杂子系统的简单接口时。
  • 当客户端和抽象的实现类之间存在多个依赖项时。

外观模式的例子

让我们通过上面的UML图了解外观设计模式的示例。

用于外观模式的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
赞(0)
未经允许不得转载:srcmini » 外观模式

评论 抢沙发

评论前必须登录!