Skip to content

Commit 36a1477

Browse files
committed
Adding App class
1 parent 5e1da63 commit 36a1477

2 files changed

Lines changed: 105 additions & 0 deletions

File tree

  • acyclic-visitor/src
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* The MIT License
3+
* Copyright (c) 2014-2016 Ilkka Seppälä
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a copy
6+
* of this software and associated documentation files (the "Software"), to deal
7+
* in the Software without restriction, including without limitation the rights
8+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
* copies of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in
13+
* all copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
* THE SOFTWARE.
22+
*/
23+
package com.iluwatar.acyclicvisitor;
24+
25+
/**
26+
* The Acyclic Visitor pattern allows new
27+
* functions to be added to existing class
28+
* hierarchies without affecting those
29+
* hierarchies, and without creating the
30+
* dependency cycles that are inherent to
31+
* the GoF Visitor pattern, by making the
32+
* Visitor base class degenerate
33+
* <p>
34+
* In this example the visitor base
35+
* class is {@link ModemVisitor}.
36+
* The base class of the visited
37+
* hierarchy is {@link Modem} and
38+
* has two children {@link Hayes}
39+
* and {@link Zoom} each one having
40+
* its own visitor interface {@link Hayes}
41+
* and {@link ZoomVisitor} respectively.
42+
* {@link ConfigureForUnixVisitor} and
43+
* {@link ConfigureForDosVisitor} implement
44+
* each derivative's visit method
45+
* only if it is required
46+
*/
47+
48+
public class App {
49+
50+
/**
51+
* Program's entry point
52+
*/
53+
54+
public static void main(String[] args) {
55+
ConfigureForUnixVisitor conUnix = new ConfigureForUnixVisitor();
56+
ConfigureForDosVisitor conDos = new ConfigureForDosVisitor();
57+
58+
Zoom zoom = new Zoom();
59+
Hayes hayes = new Hayes();
60+
61+
hayes.accept(conDos); // Hayes modem with Unix configurator
62+
zoom.accept(conDos); // Zoom modem with Dos configurator
63+
hayes.accept(conUnix); // Hayes modem with Unix configurator
64+
zoom.accept(conUnix); // Zoom modem with Unix configurator
65+
}
66+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* The MIT License
3+
* Copyright (c) 2014-2016 Ilkka Seppälä
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a copy
6+
* of this software and associated documentation files (the "Software"), to deal
7+
* in the Software without restriction, including without limitation the rights
8+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
* copies of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in
13+
* all copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
* THE SOFTWARE.
22+
*/
23+
package com.iluwatar.acyclicvisitor;
24+
25+
import org.junit.jupiter.api.Test;
26+
27+
import com.iluwatar.acyclicvisitor.App;
28+
29+
/**
30+
* Tests that the Acyclic Visitor example runs without errors.
31+
*/
32+
public class AppTest {
33+
34+
@Test
35+
public void test() {
36+
String[] args = {};
37+
App.main(args);
38+
}
39+
}

0 commit comments

Comments
 (0)