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 intchoice;
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
推荐阅读
- 工厂方法模式
- Win10怎样解除U盘“写保护”技巧
- Win10为U盘增加“写保护”技巧图文详细教程
- Win10文件资源管理器标题栏显示进程ID图文详细教程
- Win10中UWP版文件资源管理器创建快捷方式图文详细教程
- win10怎样迅速加密文件?win10迅速加密文件技巧
- win10关机时不安装更新小技巧
- 一键关闭win10开始菜单广告办法
- Win10怎样把任意文件固定到开始菜单