В чем разница между шаблоном метода «Фасад» и «Шаблон»? Оба они обеспечивают представления высокого уровня подсистемы и скрывают их от пользователя.В чем разница между шаблоном метода Facade и шаблона в C#?
Фасад шаблон
internal class SubsystemA
{
internal string A1()
{
return "Subsystem A, Method A1\n";
}
internal string A2()
{
return "Subsystem A, Method A2\n";
}
}
internal class SubsystemB
{
internal string B1()
{
return "Subsystem B, Method B1\n";
}
}
internal class SubsystemC
{
internal string C1()
{
return "Subsystem C, Method C1\n";
}
}
public static class Facade
{
static SubsystemA a = new SubsystemA();
static SubsystemB b = new SubsystemB();
static SubsystemC c = new SubsystemC();
public static void Operation1()
{
Console.WriteLine("Operation 1\n" +
a.A1() +
a.A2() +
b.B1());
}
public static void Operation2()
{
Console.WriteLine("Operation 2\n" +
b.B1() +
c.C1());
}
}
// ============= Different compilation
// Compile with csc /r:FacadeLib.dll Facade-Main.cs
class Client
{
static void Main()
{
Facade.Operation1();
Facade.Operation2();
}
}
шаблон Шаблон
interface IPrimitives
{
string Operation1();
string Operation2();
}
class Algorithm
{
public void TemplateMethod(IPrimitives a)
{
string s =
a.Operation1() +
a.Operation2();
Console.WriteLine(s);
}
}
class ClassA : IPrimitives
{
public string Operation1()
{
return "ClassA:Op1 ";
}
public string Operation2()
{
return "ClassA:Op2 ";
}
}
class ClassB : IPrimitives
{
public string Operation1()
{
return "ClassB:Op1 ";
}
public string Operation2()
{
return "ClassB.Op2 ";
}
}
class TemplateMethodPattern
{
static void Main()
{
Algorithm m = new Algorithm();
m.TemplateMethod(new ClassA());
m.TemplateMethod(new ClassB());
}
}
Этот пример был взят из O'Reilly Design Patterns
В приведенном выше указанном примере, как Фасад и шаблон Шаблон реализовать интерфейс и использует абстракцию и определяет, как должна выполняться операция. Я не вижу разницы между этими двумя шаблонами. Может ли кто-нибудь помочь мне понять это.
Фасадный шаблон похож на API библиотеки (возможно, аналогичный пространству имен System) и все, что из него является фасадом для mscorlib.dll и других библиотек), подобно интерфейсу вашего приложения, когда у вас есть бизнес и слой данных в капоте, шаблон метода шаблона - это что-то вроде эвристики - квитанция, которая не выполняет фактическую реализацию. –
@ αNerd Я обновил вопрос, замечаете ли вы какое-либо отличие от обоих шаблонов? если да, тогда вы могли бы помочь мне понять это? спасибо –
related: http: // stackoverflow.com/questions/1781860 – jaco0646