-
Notifications
You must be signed in to change notification settings - Fork 51
Expand file tree
/
Copy pathpatterns.dot
More file actions
75 lines (68 loc) · 2.61 KB
/
patterns.dot
File metadata and controls
75 lines (68 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
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
digraph G {
rankdir="BT"
node [shape=plaintext];
edge [fontsize=10 _fontcolor=darkgray]
// Inheritance
edge [label=inh arrowhead=onormal];
// Implementation
edge [label=imp weight=1000 arrowhead=onormal style=dashed];
Product -> Interface;
Factory [label=<Abstract <b>Factory</b>>]
Sample_factory -> Factory;
Proxy [label=<<b>Proxy</b>>]
{ Subject Proxy } -> Proxy_interface
Decorator [label=<<b>Decorator</b>>]
Subject_of_Decorator [label=Subject]
{ Decorator Subject_of_Decorator} -> Decorator_interface
Proxy_interface [label="Interface"]
Decorator_interface [label="Interface"]
Factory_of_prototype [label=Factory]
Interface_of_prototype [label=Interface]
Prototype -> { Factory_of_prototype Interface_of_prototype}
Prototype [label=<<b>Prototype</b>>]
Bridge_interface [label=Interface]
Bridge [label=<<b>Bridge or Adapter</b>>]
Bridge -> Bridge_interface
Observer [label=<<b>Observer</b>>]
View [label=<<b>View</b>>]
Model [label=<<b>Model</b>>]
Controller [label=<<b>Controller</b>>]
View -> Observer
Visitor [label=<<b>Abstract Visitor</b>>]
//Component [rank=min]
Sample_visitor -> Visitor
Sample_component -> Component
// Aggregation
edge [label=agg weight=1 arrowtail=odiamond dir=back style=""]
edge [label=creates dir="" arrowhead=odiamond]
Product -> Sample_factory
Prototype -> Prototype
// Dependencies
edge [label=uses weight=1 arrowhead=vee style=dashed dir="" ]
Component -> Visitor [label=accepts weight=0]
Sample_component -> Visitor [label=usage dir=both _weight=0 arrowtail=vee constraint=false]
rank = same { Sample_component Visitor }
//{Sample_visitor Sample_component } -> Client_of_Visitor [style=invis]
edge [label=uses weight=1 dir=back arrowtail=vee ]
Client_of_Decorator [label=Client]
Subject_of_Decorator -> Decorator -> Client_of_Decorator
Decorator_interface -> Client_of_Decorator
Subject_of_Decorator -> Client_of_Decorator [color=green]
Client_of_Visitor [label=Client]
Component -> Client_of_Visitor
Visitor -> Client_of_Visitor
Subject -> Proxy
Client_of_Proxy [label=Client]
Proxy -> Client_of_Proxy
Proxy_interface -> Client_of_Proxy
Model -> Controller [label=manipulates]
Interface -> Factory
Interface_of_prototype -> Factory_of_prototype
Standalone -> Bridge
Observer -> Model [label=updates]
Sample_component -> Sample_visitor [label=<<b>visits<br/>and does a work</b>> constraint=false]
edge [color=lightgray fontcolor=lightgray xweight=0 constraint=false]
Sample_visitor -> Sample_component [label="independent" constraint=false]
Subject -> Client_of_Proxy [label="no access"]
Standalone -> Bridge_interface [label="incompatible" constraint=false]
}