-Поиск по дневнику

Поиск сообщений в lazydev

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 09.12.2010
Записей:
Комментариев:
Написано: 14

Записи с меткой erlang

(и еще 254 записям на сайте сопоставлена такая метка)

Другие метки пользователя ↓

anti science ats erlang freepascal haskell lisp nemerle no way scala

Паттерны, шматтерны...

Дневник

Четверг, 09 Декабря 2010 г. 17:32 + в цитатник
Wolverrum (lazydev) все записи автора Венец?

Template Method

C#:
code:

using System;

class MainApp
{
static void Main()
{
AbstractClass c;

c = new ConcreteClassA();
c.TemplateMethod();

c = new ConcreteClassB();
c.TemplateMethod();
}
}

abstract class AbstractClass
{
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}

class ConcreteClassA : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation2()");
}
}

class ConcreteClassB : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation2()");
}
}



Erlang:
code:

-module(mainApp).
-export([main/0, templateMethod/1, classA/1, classB/1]).

primitiveOperation1A() -> io:format("ConcreteClassA.PrimitiveOperation1()~n", []).
primitiveOperation2A() -> io:format("ConcreteClassA.PrimitiveOperation2()~n", []).
classA(m1) -> fun primitiveOperation1A/0;
classA(m2) -> fun primitiveOperation2A/0.

primitiveOperation1B() -> io:format("ConcreteClassB.PrimitiveOperation1()~n", []).
primitiveOperation2B() -> io:format("ConcreteClassB.PrimitiveOperation2()~n", []).
classB(m1) -> fun primitiveOperation1B/0;
classB(m2) -> fun primitiveOperation2B/0.

templateMethod(S) ->
P = S(m1), P(),
Q = S(m2), Q(),
io:format("~n", []).

main() ->
templateMethod(fun classA/1),
templateMethod(fun classB/1).



Ой?

Метки:  

Краткость - с.т.

Дневник

Четверг, 09 Декабря 2010 г. 17:01 + в цитатник
Wolverrum (lazydev) все записи автора Ни убавить, ни прибавить

Метки:  

 Страницы: [1]