GoF定義:為子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
這個模式比較簡單。
1、C#演示代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Appearance
{
internal class Program
{
static void Main(string[] args){
Appearance xx=new Appearance();
xx.ToDo1();
Console.WriteLine("");
xx.ToDo2();
}
}
public class ObjA{
public void ToDoA(){
Console.WriteLine("ObjA的執行");
}
}
public class ObjB
{
public void ToDoB()
{
Console.WriteLine("ObjB的執行");
}
}
public class ObjC
{
public void ToDoC()
{
Console.WriteLine("ObjC的執行");
}
}
public class Appearance{
private ObjA objA;
private ObjB objB;
private ObjC objC;
public Appearance()
{
this.objA = new ObjA();
this.objB = new ObjB();
this.objC = new ObjC();
}
public void ToDo1() {
objA.ToDoA();
objB.ToDoB();
}
public void ToDo2()
{
objB.ToDoB();
objC.ToDoC();
}
}
}
輸出結果:
2、JavaScript演示代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>外觀模式</title>
</head>
<body>
<div id="demo"></div>
<script>
function ObjA(){
this.ToDoA=function(){
PrintInfo("ObjA的執行");
};
}
function ObjB(){
this.ToDoB=function(){
PrintInfo("ObjB的執行");
};
}
function ObjC(){
this.ToDoC=function(){
PrintInfo("ObjC的執行");
};
}
function Appearance(){
this.ObjA=new ObjA();
this.ObjB=new ObjB();
this.ObjC=new ObjC();
this.ToDo1=function(){
this.ObjA.ToDoA();
this.ObjB.ToDoB();
};
this.ToDo2=function(){
this.ObjB.ToDoB();
this.ObjC.ToDoC();
}
}
function PrintInfo(Str){
document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + Str+"<br>";
}
AA=new Appearance();
AA.ToDo1();
PrintInfo("");
AA.ToDo2();
</script>
</body>
</html>
網頁裡的輸出:
ObjA的執行
ObjB的執行
ObjB的執行
ObjC的執行
3、PHP演示代碼:
<?php
class Appearance{
private $ObjA;
private $ObjB;
private $ObjC;
function __construct(){
$this->ObjA=new ObjA;
$this->ObjB=new ObjB;
$this->ObjC=new ObjC;
}
function ToDo1(){
$this->ObjA->ToDoA();
$this->ObjB->ToDoB();
}
function ToDo2(){
$this->ObjB->ToDoB();
$this->ObjC->ToDoC();
}
}
class ObjA{
function ToDoA(){
echo "ObjA的執行。<br>";
}
}
class ObjB{
function ToDoB(){
echo "ObjB的執行。<br>";
}
}
class ObjC{
function ToDoC(){
echo "ObjC的執行。<br>";
}
}
$Appearance=new Appearance;
$Appearance->ToDo1();
echo "<br>";
$Appearance->ToDo2();
?>
網頁裡的輸出:
ObjA的執行。
ObjB的執行。
ObjB的執行。
ObjC的執行。
4、Java演示代碼:
class DesignAppearance{
public static void main(String[] args){
Appearance xx=new Appearance();
xx.ToDo1();
System.out.println("");
xx.ToDo2();
}
}
class ObjA{
public void ToDoA(){
System.out.println("ObjA的執行");
}
}
class ObjB{
public void ToDoB(){
System.out.println("ObjB的執行");
}
}
class ObjC{
public void ToDoC(){
System.out.println("ObjC的執行");
}
}
class Appearance{
private ObjA OA = new ObjA();
private ObjB OB = new ObjB();
private ObjC OC = new ObjC();
public Appearance(){
System.out.println("初始化");
}
public void ToDo1(){
OA.ToDoA();
OB.ToDoB();
}
public void ToDo2(){
OB.ToDoB();
OC.ToDoC();
}
}
結果輸出:
5、Pthon演示代碼:
class ObjA:
def todoA(self):
print("ObjA的執行")
class ObjB:
def todoB(self):
print("ObjB的執行")
class ObjC:
def todoC(self):
print("ObjC的執行")
class Appearance:
def __init__(self):
self.AA=ObjA()
self.BB=ObjB()
self.CC=ObjC()
def todo1(self):
self.AA.todoA()
self.BB.todoB()
def todo2(self):
self.BB.todoB()
self.CC.todoC()
xx=Appearance()
xx.todo1()
print("")
xx.todo2()
控制台輸出:
ObjA的執行
ObjB的執行
ObjB的執行
ObjC的執行