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演示代码:
外观模式
网页里的输出:
ObjA的执行 ObjB的执行 ObjB的执行 ObjC的执行
3、PHP演示代码:
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的执行。
";
}
}
class ObjB{
function ToDoB(){
echo "ObjB的执行。
";
}
}
class ObjC{
function ToDoC(){
echo "ObjC的执行。
";
}
}
$Appearance=new Appearance;
$Appearance->ToDo1();
echo "
";
$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的执行
6、C++演示代码
#includeusing namespace std; class ObjA { public: void ToDoA() { std::cout << "ObjA的执行n"; } }; class ObjB { public: void ToDoB() { std::cout << "ObjB的执行n"; } }; class ObjC { public: void ToDoC() { std::cout << "ObjC的执行n"; } }; class Facade { public: Facade() { OA = new ObjA; OB = new ObjB; OC = new ObjC; } ~Facade() { delete OA; delete OB; delete OC; } void TODO1() { OA->ToDoA(); OB->ToDoB(); } void TODO2() { OB->ToDoB(); OC->ToDoC(); } private: ObjA *OA; ObjB *OB; ObjC *OC; }; int main() { Facade* APP = new Facade; APP->TODO1(); APP->TODO2(); //delete APP; system("pause"); return 1; }
输出:



