您当前的位置: 首页 >  Python

dawn

暂无认证

  • 3浏览

    0关注

    204博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式之外观模式(C# / JavaScript / PHP / Java / Python / C++ 演示代码)

dawn 发布时间:2022-06-30 17:02:36 ,浏览量:3

  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演示代码:



	
		
		外观模式
	
	
		
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+""; } AA=new Appearance(); AA.ToDo1(); PrintInfo(""); AA.ToDo2();

  网页里的输出:

ObjA的执行
ObjB的执行

ObjB的执行
ObjC的执行

  3、PHP演示代码:

  网页里的输出:

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++演示代码

#include 
using namespace std;

class ObjA
{
public:
    void ToDoA() {
        std::cout 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;
}

  输出:

 

关注
打赏
1664252102
查看更多评论
立即登录/注册

微信扫码登录

0.2462s