-
+137
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
using System;
using System.Collections.Generic;
namespace Builder
{
public class MainApp
{
public static void Main()
{
// Create director and builders
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new ConcreteBuilder2();
// Construct two products
director.Construct(b1);
Product p1 = b1.GetResult();
p1.Show();
director.Construct(b2);
Product p2 = b2.GetResult();
p2.Show();
// Wait for user
Console.Read();
}
}
// "Director"
class Director
{
// Builder uses a complex series of steps
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
// "Builder"
abstract class Builder
{
public virtual void BuildPartA(){}
public virtual void BuildPartB(){}
public virtual Product GetResult(){}
}
// "ConcreteBuilder1"
class ConcreteBuilder1 : Builder
{
private readonly Product product = new Product();
public override void BuildPartA()
{
product.Add("PartA");
}
public override void BuildPartB()
{
product.Add("PartB");
}
public override Product GetResult()
{
return product;
}
}
// "ConcreteBuilder2"
class ConcreteBuilder2 : Builder
{
private readonly Product product = new Product();
public override void BuildPartA()
{
product.Add("PartX");
}
public override void BuildPartB()
{
product.Add("PartY");
}
public override Product GetResult()
{
return product;
}
}
// "Product"
class Product
{
private readonly List<string> parts = new List<string>();
public void Add(string part)
{
parts.Add(part);
}
public void Show()
{
Console.WriteLine("\nProduct Parts -------");
foreach (string part in parts)
Console.WriteLine(part);
}
}
}
"Хороший","годный" пример паттерна билдер с википедии, не соответствующие лежащей там же Uml схеме чуть больше чем полностью
Схема
http://upload.wikimedia.org/wikipedia/ru/2/28/Builder.gif
kegdan,
29 Декабря 2013
-
−167
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
-- =============================================
-- Create procedure basic template
-- Предназначена - проставить номер идентичного счета по данной АК
-- =============================================
CREATE PROCEDURE Num_List_of_Flights
AS
-- Результаты группировки - Временная таблица
SELECT DISTINCT List_of_Flights, Count(List_of_Flights) AS Kol_fo_Flights
INTO Vrem_Table_Flights
FROM PPLS2BILLS_OBUF a
WHERE Flag_Bill=0 and List_of_Flights Is not Null
GROUP BY List_of_Flights
-- Копирую перечень сфомированных счетов в Steck_Table_Flights
INSERT INTO Steck_Table_Flights
SELECT
List_of_Flights = S.List_of_Flights,
Kol_fo_Flights = S.Kol_fo_Flights
FROM dbo.Vrem_Table_Flights AS S
-- Удаляю временную таблицу
DROP TABLE Vrem_Table_Flights
-- Создаю временную таблицу группировки по счетам (сколько одинаковых счетов )
SELECT DISTINCT List_of_Flights, Count(List_of_Flights) AS Kol_Flights
INTO Vrem_Steck_Table_Flights
FROM Steck_Table_Flights
GROUP BY List_of_Flights
-- Корректирую номера Flights и Сбрасываю флаг Flag_Bill в 1 (как обработано)
UPDATE a
SET Num_Flights = b.Kol_Flights,
Flag_Bill = 1
FROM PPLS2BILLS_OBUF a INNER JOIN Vrem_Steck_Table_Flights b
ON a.List_of_Flights = b.List_of_Flights
WHERE Flag_Bill = 0
-- Удаляю временную таблицу Vrem_Steck_Table_Flights
DROP TABLE Vrem_Steck_Table_Flights
GO
-- EXEC Num_List_of_Flights
никому нельзя верить, а особенно собственным группировкам
bahamot,
29 Декабря 2013
-
+133
- 1
- 2
- 3
- 4
md a
copy a.bat a
cd a
a.bat
Угадайте, как называется файл с этим содержимым.
dos_,
29 Декабря 2013
-
+126
- 1
http://www.youtube.com/watch?v=HNMq8XS4LhE
позвольте и мне похулиганить.
в тему недавних комментов.
Lure Of Chaos,
28 Декабря 2013
-
+18
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
#include <iostream>
#define PRINT(val) std::cout << #val \
<< " value: " << val \
<< " address: " << &val << std::endl;
int& constRef(){
int var = 10;
PRINT(var)
return var;
}
int main() {
const int a = 'a', b = 'bcde';
std::cout << a << " " << b << std::endl;
const int& ref = constRef();
PRINT(ref)
}
Малоизвестный синтаксис плюсов.
1. Инициализация целочисленного значения из строки (используется в строках-классах времени компиляции).
2. Константная ссылка на стековый объект (используется для создания DSL, в т.ч. boost::spirit).
P.S.: Более полный вариант со строками лежит на форуме.
crastinus,
28 Декабря 2013
-
+125
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
def executeAfterDelay(t: Duration) (toExecute: => Unit): Future[Unit] = {
future {
blocking {
Thread.sleep(t.toMillis)
}
toExecute
}
}
Scala. Код работы с асинхронным фреймворком Akka. Говнонюанс в том, что есть встроенный класс Scheduler, делающий то же самое, только лучше.
0rt,
28 Декабря 2013
-
+113
- 1
- 2
Стартовал форум работы еще много, тестить уже можно
http://gvforum.ru/
Vasiliy,
28 Декабря 2013
-
+160
- 1
- 2
- 3
if ( String(typeof Ext).toLowerCase() === "object") {
Ext.BLANK_IMAGE_URL = '/style/ext/resources/images/default/s.gif';
}
Ох. Штабильненько.
Elvenfighter,
28 Декабря 2013
-
+119
Я видел ЭТО изнутри, я в ЭТОМ участвовал.
Мы с ЭТО теперь едины.
У каждого из нас есть своё ЭТО.
Xom94ok,
27 Декабря 2013
-
+155
- 1
<!-- ko if: CurrentUserRole() != 16 -->
Угадай какая роль
knockoutjs
Rez,
27 Декабря 2013