public class Wheel { public void WAction1() { } public void WAction2() { } } public class Engine { public void EAction1() { } public void EAction2() { } } public class Controller { public void CAction1() { } public void CAction2() { } } public class BodyWork { public void BAction1() { } public void BAction2() { } }
public class TankFacade { Wheel[] wheels = new Wheel[4]; Engine[] engines = new Engine[4]; BodyWork bodywork = new BodyWork(); Controller controller = new Controller();
public void Start() { //用到子系统中的一个或多个 } public void Stop() { //用到子系统中的一个或多个 } public void Run() { //用到子系统中的一个或多个 } public void Shot() { //用到子系统中的一个或多个 } }
客户端调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14
public class App { static void Main() { TankFacade facade = new TankFacade(); //可以根据不同场景的需要来选择调用相应的方法 //在客户处之需要使用Facade就可以,不需要知道子系统的实现 //就起到了和子系统解耦的作用 facade.Start(); facade.Run(); facade.Shot(); facade.Stop(); } }