Skip to content

Commit 7ac7283

Browse files
author
Sepehrkianian09
committed
Fucking Design Pattern
1 parent b967cf9 commit 7ac7283

File tree

5 files changed

+54
-29
lines changed

5 files changed

+54
-29
lines changed

AlphaInvertedSearcher/Engine/Engine/AlphaEngine.cs

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
namespace AlphaInvertedSearcher.Engine
88
{
9-
public class AlphaEngine : IClone<AlphaEngine>, IDecorate
9+
public class AlphaEngine : IClone<AlphaEngine>
1010
{
11-
protected IDecorate _decorate;
11+
protected AlphaEngine _decorate;
1212
private MapExtractor _mapExtractor;
1313
private SearchQuery _query;
1414

@@ -23,42 +23,67 @@ public AlphaEngine(Map map)
2323
_decorate = null;
2424
}
2525

26-
protected AlphaEngine(IDecorate decorate)
26+
protected AlphaEngine(AlphaEngine decorate)
2727
{
2828
_decorate = decorate;
2929
}
3030

31+
protected virtual AlphaEngine CreateThisEngine(AlphaEngine decorate)
32+
{
33+
return new AlphaEngine(decorate);
34+
}
35+
3136
public virtual string GetDocByID(string docID)
3237
{
3338
return _mapExtractor.GetDocById(docID);
3439
}
3540

3641
public AlphaEngine AddMustIncludes(params string[] norms)
3742
{
38-
AlphaEngine alphaEngine = Clone();
39-
alphaEngine._query.norms.UnionWith(ArrayToLowerHashSet(norms));
40-
return alphaEngine;
43+
if (_decorate == null)
44+
{
45+
AlphaEngine alphaEngine = Clone();
46+
alphaEngine._query.norms.UnionWith(ArrayToLowerHashSet(norms));
47+
return alphaEngine;
48+
}
49+
50+
return CreateThisEngine(_decorate.AddMustIncludes(norms));
4151
}
4252

4353
public AlphaEngine AddLeastIncludes(params string[] poss)
4454
{
45-
AlphaEngine alphaEngine = Clone();
46-
alphaEngine._query.poss.UnionWith(ArrayToLowerHashSet(poss));
47-
return alphaEngine;
55+
if (_decorate == null)
56+
{
57+
AlphaEngine alphaEngine = Clone();
58+
alphaEngine._query.poss.UnionWith(ArrayToLowerHashSet(poss));
59+
return alphaEngine;
60+
}
61+
62+
return CreateThisEngine(_decorate.AddLeastIncludes(poss));
4863
}
4964

5065
public AlphaEngine AddExcludes(params string[] negs)
5166
{
52-
AlphaEngine alphaEngine = Clone();
53-
alphaEngine._query.negs.UnionWith(ArrayToLowerHashSet(negs));
54-
return alphaEngine;
67+
if (_decorate == null)
68+
{
69+
AlphaEngine alphaEngine = Clone();
70+
alphaEngine._query.negs.UnionWith(ArrayToLowerHashSet(negs));
71+
return alphaEngine;
72+
}
73+
74+
return CreateThisEngine(_decorate.AddExcludes(negs));
5575
}
5676

5777
public AlphaEngine ReconstructMap(Map map)
5878
{
59-
AlphaEngine alphaEngine = Clone();
60-
alphaEngine._mapExtractor = new MapExtractor(map);
61-
return alphaEngine;
79+
if (_decorate == null)
80+
{
81+
AlphaEngine alphaEngine = Clone();
82+
alphaEngine._mapExtractor = new MapExtractor(map);
83+
return alphaEngine;
84+
}
85+
86+
return CreateThisEngine(_decorate.ReconstructMap(map));
6287
}
6388

6489
public virtual List<string> ExecuteQuery()

AlphaInvertedSearcher/Engine/Engine/Decorator/AlphaEngineDocDecorator.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@ public class AlphaEngineDocDecorator : AlphaEngine
44
{
55
private int board;
66

7-
public AlphaEngineDocDecorator(IDecorate decorate, int board) : base(decorate)
7+
public AlphaEngineDocDecorator(AlphaEngine decorate, int board) : base(decorate)
88
{
99
this.board = board;
1010
}
1111

12+
protected override AlphaEngine CreateThisEngine(AlphaEngine decorate)
13+
{
14+
return new AlphaEngineDocDecorator(decorate, board);
15+
}
16+
1217
public override string GetDocByID(string docID)
1318
{
1419
string doc = _decorate.GetDocByID(docID);

AlphaInvertedSearcher/Engine/Engine/Decorator/AlphaEngineQueryDecorator.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
using System.Collections.Generic;
2+
using AlphaInvertedSearcher.InvertedMap;
23

34
namespace AlphaInvertedSearcher.Engine
45
{
56
public class AlphaEngineQueryDecorator : AlphaEngine
67
{
78
private int board;
89

9-
public AlphaEngineQueryDecorator(IDecorate decorate, int board) : base(decorate)
10+
public AlphaEngineQueryDecorator(AlphaEngine decorate, int board) : base(decorate)
1011
{
1112
this.board = board;
1213
}
14+
15+
protected override AlphaEngine CreateThisEngine(AlphaEngine decorate)
16+
{
17+
return new AlphaEngineQueryDecorator(decorate, board);
18+
}
1319

1420
public override List<string> ExecuteQuery()
1521
{

AlphaInvertedSearcher/Engine/Engine/IDecorate.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

AlphaInvertedSearcherTest/InvertedMapTest/MapTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,6 @@ private Tuple<Dictionary<string, string>, Dictionary<string, HashSet<string>>>R
107107
}
108108
);
109109
}
110-
110+
111111
}
112112
}

0 commit comments

Comments
 (0)