本文共 2189 字,大约阅读时间需要 7 分钟。
public interface IYunSuan { double getResult(int num1, int num2); } public class jia : IYunSuan { public double getResult(int num1, int num2) { return num1 + num2; } } public class jian : IYunSuan { public double getResult(int num1, int num2) { return num1 - num2; } } public class cheng : IYunSuan { public double getResult(int num1, int num2) { return num1 * num2; } } public class chu : IYunSuan { public double getResult(int num1, int num2) { if (num2 == 0) return 0; return num1 / num2; } } //门脸类(中间层) public class Facade { IYunSuan jia1; IYunSuan jian1; IYunSuan cheng1; IYunSuan chu1; public Facade() { jia1 = new jia(); jian1 = new jian(); cheng1 = new cheng(); chu1 = new chu(); } //排列内部对象的方法展示顺序 public void display1(int num1,int num2) { var jiaresult = jia1.getResult(num1,num2); var jianresult = jian1.getResult(num1, num2); var chengresult = cheng1.getResult(num1, num2); Console.WriteLine(jiaresult); Console.WriteLine(jianresult); Console.WriteLine(chengresult); Console.ReadLine(); } public void display2(int num1, int num2) { var jianresult = jian1.getResult(num1, num2); var churesult = chu1.getResult(num1, num2); Console.WriteLine(jianresult); Console.WriteLine(churesult); Console.ReadLine(); } } //前端 static void Main(string[] args) { //前端类不需要直接和运算类打交道,符合迪米特法则(最少知识原则)、依赖倒转原则(高层不依赖低层) Facade f = new Facade(); f.display1(100,20); f.display2(30,10); }
总结:外观模式应该是我们最常用的模式之一,经典的3层架构就符合这个原则,UI层和数据层没有直接通信,而是通过业务逻辑层。UI和业务逻辑、业务逻辑和数据层 之间都在加上一个接口层(门脸接口)的话扩展性和维护性会好很多。
在老系统上面加功能,最好不要轻易修改老系统代码,加个门脸接口层就好,前端和门脸接口层打交道,门脸层和老系统打交道。这样结构清晰,方便维护,也不会影响老系统。转载于:https://blog.51cto.com/5591787/2115114