外观模式

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

    推荐阅读