├── 9781484218013.jpg
├── ApressCodes
├── AbstractFactoryPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── abstractfactory
│ │ └── pattern
│ │ └── demo
│ │ ├── AbstractFactoryPatternEx.class
│ │ ├── AbstractFactoryPatternEx.java
│ │ ├── ActionMovieFactory.class
│ │ ├── BollywoodActionMovie.class
│ │ ├── BollywoodComedyMovie.class
│ │ ├── ComedyMovieFactory.class
│ │ ├── IBollywoodMovie.class
│ │ ├── IMovieFactory.class
│ │ ├── ITollywoodMovie.class
│ │ ├── TollywoodActionMovie.class
│ │ └── TollywoodComedyMovie.class
├── AdapterPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── adapter
│ │ └── pattern
│ │ └── demo
│ │ ├── AdapterPattern.class
│ │ ├── AdapterPattern.java
│ │ ├── Calculator.class
│ │ ├── CalculatorAdapter.class
│ │ ├── Rect.class
│ │ └── Triangle.class
├── BridgePattern2
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── bridge
│ │ └── pattern
│ │ └── demo2
│ │ ├── BridgePatternDemo2.class
│ │ ├── BridgePatternDemo2.java
│ │ ├── GreenColor.class
│ │ ├── IColor.class
│ │ ├── Rectangle.class
│ │ ├── RedColor.class
│ │ ├── Shape.class
│ │ └── Triangle.class
├── BuilderPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── builder
│ │ └── pattern
│ │ └── demo
│ │ ├── BuilderPatternEx.class
│ │ ├── BuilderPatternEx.java
│ │ ├── Car.class
│ │ ├── Director.class
│ │ ├── IBuilder.class
│ │ ├── MotorCycle.class
│ │ └── Product.class
├── ChainOfResponsibilityPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── chainofresponsibility
│ │ └── pattern
│ │ └── demo
│ │ ├── ChainOfResponsibilityPatternEx.class
│ │ ├── ChainOfResponsibilityPatternEx.java
│ │ ├── EmailErrorHandler.class
│ │ ├── FaxErrorHandler.class
│ │ ├── IReceiver.class
│ │ ├── IssueRaiser.class
│ │ ├── Message.class
│ │ └── MessagePriority.class
├── ClassAndObjectAdapter
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── different
│ │ └── type
│ │ └── adapter
│ │ ├── ClassAdapter.class
│ │ ├── ClassAndObjectAdapter.class
│ │ ├── ClassAndObjectAdapter.java
│ │ ├── IIntegerValue.class
│ │ ├── IntegerValue.class
│ │ └── ObjectAdapter.class
├── CommandPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── command
│ │ └── pattern
│ │ └── demo
│ │ ├── CommandPatternEx.class
│ │ ├── CommandPatternEx.java
│ │ ├── ICommand.class
│ │ ├── Invoke.class
│ │ ├── MyRedoCommand.class
│ │ ├── MyUndoCommand.class
│ │ └── Receiver.class
├── CompositePattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── composite
│ │ └── pattern
│ │ └── demo
│ │ ├── CompositePatternEx.class
│ │ ├── CompositePatternEx.java
│ │ ├── ITeacher.class
│ │ └── Teacher.class
├── DecoratorPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── decorator
│ │ └── pattern
│ │ └── demo
│ │ ├── AbstractDecorator.class
│ │ ├── Component.class
│ │ ├── ConcreteComponent.class
│ │ ├── ConcreteDecoratorEx_1.class
│ │ ├── ConcreteDecoratorEx_2.class
│ │ ├── DecoratorPatternEx.class
│ │ └── DecoratorPatternEx.java
├── FacadePattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ ├── facade
│ │ └── pattern
│ │ │ └── demo
│ │ │ ├── FacadePatternEx.class
│ │ │ └── FacadePatternEx.java
│ ├── robotfacade
│ │ ├── RobotFacade.class
│ │ └── RobotFacade.java
│ └── robotparts
│ │ ├── RobotBody.class
│ │ ├── RobotBody.java
│ │ ├── RobotColor.class
│ │ ├── RobotColor.java
│ │ ├── RobotMetal.class
│ │ └── RobotMetal.java
├── FactoryPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── factory
│ │ └── pattern
│ │ └── demo
│ │ ├── ConcreteFactory.class
│ │ ├── Duck.class
│ │ ├── FactoryPatternEx.class
│ │ ├── FactoryPatternEx.java
│ │ ├── IAnimal.class
│ │ ├── IAnimalFactory.class
│ │ ├── Tiger.class
│ │ └── Tiger.class.bak
├── FlyweightPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── flyweight
│ │ └── pattern
│ │ └── demo
│ │ ├── FlyweightPatternEx.class
│ │ ├── FlyweightPatternEx.java
│ │ ├── IRobot.class
│ │ ├── LargeRobot.class
│ │ ├── RobotFactory.class
│ │ └── SmallRobot.class
├── FlyweightPatternModified
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── flyweight
│ │ └── pattern
│ │ └── modified
│ │ └── demo
│ │ ├── FlyweightPatternModifiedEx.class
│ │ ├── FlyweightPatternModifiedEx.java
│ │ ├── IRobot.class
│ │ ├── Robot.class
│ │ └── RobotFactory.class
├── InterpreterPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── interpreter
│ │ └── pattern
│ │ └── demo
│ │ ├── Context.class
│ │ ├── IExpression.class
│ │ ├── IntToWords.class
│ │ ├── InterpreterPatternEx.class
│ │ ├── InterpreterPatternEx.java
│ │ └── StringToBinaryExp.class
├── IteratorPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ ├── aggregate
│ │ ├── Arts$ArtsIterator.class
│ │ ├── Arts.class
│ │ ├── Arts.java
│ │ ├── ISubject.class
│ │ ├── ISubject.java
│ │ ├── Science$ScienceIterator.class
│ │ ├── Science.class
│ │ └── Science.java
│ ├── iterator
│ │ ├── IIterator.class
│ │ └── IIterator.java
│ └── iteratorpattern
│ │ └── demo
│ │ ├── IteratorPatternEx.class
│ │ └── IteratorPatternEx.java
├── MediatorPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── mediator
│ │ └── pattern
│ │ └── demo
│ │ ├── Boss.class
│ │ ├── ConcreteMediator.class
│ │ ├── Friend.class
│ │ ├── Friend1.class
│ │ ├── Friend2.class
│ │ ├── Mediator.class
│ │ ├── MediatorPatternEx.class
│ │ └── MediatorPatternEx.java
├── MementoPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── memento
│ │ └── pattern
│ │ └── demo
│ │ ├── Caretaker.class
│ │ ├── Memento.class
│ │ ├── MementoPatternEx.class
│ │ ├── MementoPatternEx.java
│ │ └── Originator.class
├── ObserverPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── observer
│ │ └── pattern
│ │ └── demo
│ │ ├── ISubject.class
│ │ ├── Observer.class
│ │ ├── ObserverPatternEx.class
│ │ ├── ObserverPatternEx.java
│ │ └── Subject.class
├── ObserverPatternDemo3
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── observer
│ │ └── pattern
│ │ └── demo3
│ │ ├── IObserver.class
│ │ ├── ISubject.class
│ │ ├── Observer1.class
│ │ ├── Observer2.class
│ │ ├── Observer3.class
│ │ ├── ObserverPatternDemo3Ex.class
│ │ ├── ObserverPatternDemo3Ex.java
│ │ ├── Subject1.class
│ │ └── Subject2.class
├── ObserverPatternModified
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── observer
│ │ └── pattern
│ │ └── demo2
│ │ ├── IObserver.class
│ │ ├── ISubject.class
│ │ ├── Observer1.class
│ │ ├── Observer2.class
│ │ ├── ObserverPatternModifiedEx.class
│ │ ├── ObserverPatternModifiedEx.java
│ │ └── Subject.class
├── PrototypePattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ ├── car
│ │ ├── BasicCar.class
│ │ ├── BasicCar.java
│ │ ├── Ford.class
│ │ ├── Ford.java
│ │ ├── Nano.class
│ │ └── Nano.java
│ └── prototype
│ │ └── pattern
│ │ └── demo
│ │ ├── PrototypePatternEx.class
│ │ └── PrototypePatternEx.java
├── ProxyPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ ├── OriginalClasses
│ │ ├── ConcreteSubject.class
│ │ ├── ConcreteSubject.java
│ │ ├── Subject.class
│ │ └── Subject.java
│ ├── ProxyClasses
│ │ ├── Proxy.class
│ │ └── Proxy.java
│ └── proxy
│ │ └── pattern
│ │ └── demo
│ │ ├── ProxyPatternEx.class
│ │ └── ProxyPatternEx.java
├── SingletonPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── singleton
│ │ └── pattern
│ │ └── demo
│ │ ├── MakeACaptain$SingletonHelper.class
│ │ ├── MakeACaptain.class
│ │ ├── SingletonPatternEx.class
│ │ └── SingletonPatternEx.java
├── StatePattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ └── state
│ │ └── pattern
│ │ └── demo
│ │ ├── Off.class
│ │ ├── On.class
│ │ ├── RemoteControl.class
│ │ ├── StatePatternEx.class
│ │ ├── StatePatternEx.java
│ │ └── TV.class
├── StrategyPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ ├── choices
│ │ ├── FirstChoice.class
│ │ ├── FirstChoice.java
│ │ ├── IChoice.class
│ │ ├── IChoice.java
│ │ ├── SecondChoice.class
│ │ └── SecondChoice.java
│ ├── contextofchoice
│ │ ├── Context.class
│ │ └── Context.java
│ └── strategy
│ │ └── pattern
│ │ └── demo
│ │ ├── StrategyPatternEx.class
│ │ └── StrategyPatternEx.java
├── TemplateMethodPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ └── org.eclipse.jdt.core.prefs
│ ├── engineering
│ │ └── papers
│ │ │ ├── BasicEngineering.class
│ │ │ ├── BasicEngineering.java
│ │ │ ├── ComputerScience.class
│ │ │ ├── ComputerScience.java
│ │ │ ├── Electronics.class
│ │ │ └── Electronics.java
│ └── template
│ │ └── method
│ │ └── pattern
│ │ └── demo
│ │ ├── TemplateMethodPatternEx.class
│ │ └── TemplateMethodPatternEx.java
└── VisitorPattern
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ └── org.eclipse.jdt.core.prefs
│ └── visitor
│ └── pattern
│ └── demo
│ ├── IOriginalInterface.class
│ ├── IVisitor.class
│ ├── MyClass.class
│ ├── Visitor.class
│ ├── VisitorPatternEx.class
│ └── VisitorPatternEx.java
├── Errata.md
├── LICENSE.txt
├── README.md
└── contributing.md
/9781484218013.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/9781484218013.jpg
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | AbstractFactoryPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/AbstractFactoryPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/AbstractFactoryPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/AbstractFactoryPatternEx.java:
--------------------------------------------------------------------------------
1 | package abstractfactory.pattern.demo;
2 | interface ITollywoodMovie
3 | {
4 | String MovieName();
5 | }
6 |
7 | interface IBollywoodMovie
8 | {
9 | String MovieName();
10 | }
11 |
12 | interface IMovieFactory
13 | {
14 | ITollywoodMovie GetTollywoodMovie();
15 | IBollywoodMovie GetBollywoodMovie();
16 | }
17 |
18 | //Tollywood Movie collections
19 | class TollywoodActionMovie implements ITollywoodMovie
20 | {
21 | @Override
22 | public String MovieName()
23 | {
24 | return "Kranti is a Tollywood Action Movie";
25 | }
26 |
27 | }
28 |
29 | class TollywoodComedyMovie implements ITollywoodMovie
30 | {
31 | @Override
32 | public String MovieName()
33 | {
34 | return "BasantaBilap is Tollywood Comedy Movie";
35 | }
36 | }
37 |
38 |
39 | // Bollywood Movie collections
40 | class BollywoodActionMovie implements IBollywoodMovie
41 | {
42 | @Override
43 | public String MovieName()
44 | {
45 | return "Bang Bang is a Bollywood Action Movie";
46 | }
47 | }
48 |
49 | class BollywoodComedyMovie implements IBollywoodMovie
50 | {
51 | @Override
52 | public String MovieName()
53 | {
54 | return "Munna Bhai MBBS is a Bollywood Comedy Movie";
55 | }
56 | }
57 |
58 | //Action Movie Factory
59 | class ActionMovieFactory implements IMovieFactory
60 | {
61 | public ITollywoodMovie GetTollywoodMovie()
62 | {
63 | return new TollywoodActionMovie();
64 | }
65 |
66 | public IBollywoodMovie GetBollywoodMovie()
67 | {
68 | return new BollywoodActionMovie();
69 | }
70 | }
71 | //Comedy Movie Factory
72 | class ComedyMovieFactory implements IMovieFactory
73 | {
74 | public ITollywoodMovie GetTollywoodMovie()
75 | {
76 | return new TollywoodComedyMovie();
77 | }
78 |
79 | public IBollywoodMovie GetBollywoodMovie()
80 | {
81 | return new BollywoodComedyMovie();
82 | }
83 | }
84 | class AbstractFactoryPatternEx
85 | {
86 | public static void main(String[] args)
87 | {
88 | System.out.println("***Abstract Factory Pattern Demo***");
89 | ActionMovieFactory actionMovies = new ActionMovieFactory();
90 | ITollywoodMovie tAction = actionMovies.GetTollywoodMovie();
91 | IBollywoodMovie bAction = actionMovies.GetBollywoodMovie();
92 |
93 | System.out.println("\nAction movies are:");
94 | System.out.println(tAction.MovieName());
95 | System.out.println(bAction.MovieName());
96 |
97 |
98 | ComedyMovieFactory comedyMovies = new ComedyMovieFactory();
99 | ITollywoodMovie tComedy = comedyMovies.GetTollywoodMovie();
100 | IBollywoodMovie bComedy = comedyMovies.GetBollywoodMovie();
101 |
102 | System.out.println("\nComedy movies are:");
103 | System.out.println(tComedy.MovieName());
104 | System.out.println(bComedy.MovieName());
105 |
106 | }
107 | }
108 |
109 |
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/ActionMovieFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/ActionMovieFactory.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/BollywoodActionMovie.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/BollywoodActionMovie.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/BollywoodComedyMovie.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/BollywoodComedyMovie.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/ComedyMovieFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/ComedyMovieFactory.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/IBollywoodMovie.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/IBollywoodMovie.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/IMovieFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/IMovieFactory.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/ITollywoodMovie.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/ITollywoodMovie.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/TollywoodActionMovie.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/TollywoodActionMovie.class
--------------------------------------------------------------------------------
/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/TollywoodComedyMovie.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AbstractFactoryPattern/abstractfactory/pattern/demo/TollywoodComedyMovie.class
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | AdapterPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/adapter/pattern/demo/AdapterPattern.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AdapterPattern/adapter/pattern/demo/AdapterPattern.class
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/adapter/pattern/demo/AdapterPattern.java:
--------------------------------------------------------------------------------
1 | package adapter.pattern.demo;
2 | class Rect
3 | {
4 | public double l;
5 | public double w;
6 | }
7 | class Triangle
8 | {
9 | public double b;//base
10 | public double h;//height
11 | public Triangle(int b, int h)
12 | {
13 | this.b = b;
14 | this.h = h;
15 | }
16 | }
17 | /*Calculator can calculate the area of a rectangle.To calculate the area we it needs an Rectangle input.*/
18 | class Calculator
19 | { Rect rectangle;
20 | public double getArea(Rect r)
21 | {
22 | rectangle=r;
23 | return rectangle.l * rectangle.w;
24 | }
25 | }
26 |
27 | /*Calculate the area of a Triangle using CalculatorAdapter.Please note here:this time our input is a Triangle.*/
28 | class CalculatorAdapter
29 | {
30 | Calculator calculator;
31 | Triangle triangle;
32 | public double getArea(Triangle t)
33 | {
34 | calculator = new Calculator();
35 | triangle=t;
36 | Rect r = new Rect();
37 | //Area of Triangle=0.5*base*height
38 | r.l = triangle.b;
39 | r.w = 0.5*triangle.h;
40 | return calculator.getArea(r);
41 | }
42 |
43 | }
44 |
45 | public class AdapterPattern
46 | {
47 | public static void main(String[] args)
48 | {
49 | System.out.println("***Adapter Pattern Demo***");
50 | CalculatorAdapter cal=new CalculatorAdapter();
51 | Triangle t = new Triangle(20,10);
52 | System.out.println("\nAdapter Pattern Example\n");
53 | System.out.println("Area of Triangle is :" + cal.getArea(t));
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/adapter/pattern/demo/Calculator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AdapterPattern/adapter/pattern/demo/Calculator.class
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/adapter/pattern/demo/CalculatorAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AdapterPattern/adapter/pattern/demo/CalculatorAdapter.class
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/adapter/pattern/demo/Rect.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AdapterPattern/adapter/pattern/demo/Rect.class
--------------------------------------------------------------------------------
/ApressCodes/AdapterPattern/adapter/pattern/demo/Triangle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/AdapterPattern/adapter/pattern/demo/Triangle.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | BridgePattern2
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/BridgePatternDemo2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/BridgePatternDemo2.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/BridgePatternDemo2.java:
--------------------------------------------------------------------------------
1 | package bridge.pattern.demo2;
2 |
3 | //Colors-The Implementor
4 |
5 | interface IColor
6 | {
7 | void fillWithColor(int border);
8 | }
9 | class RedColor implements IColor
10 | {
11 | @Override
12 | public void fillWithColor(int border)
13 | {
14 | System.out.print("Red color with " +border+" inch border");
15 |
16 | }
17 | }
18 | class GreenColor implements IColor
19 | {
20 | @Override
21 | public void fillWithColor(int border)
22 | {
23 | System.out.print("Green color with " +border+" inch border.");
24 |
25 | }
26 | }
27 |
28 |
29 | //Shapes-The Abstraction
30 |
31 | abstract class Shape
32 | {
33 | //Composition
34 | protected IColor color;
35 | protected Shape(IColor c)
36 | {
37 | this.color = c;
38 | }
39 | abstract void drawShape(int border);//Low level
40 | abstract void modifyBorder(int border,int increment);//high level
41 | }
42 |
43 | class Triangle extends Shape
44 | {
45 | protected Triangle(IColor c)
46 | {
47 | super(c);
48 | }
49 | //Implementor specific method
50 | @Override
51 | void drawShape(int border) {
52 | System.out.print(" This Triangle colored with: ");
53 | color.fillWithColor(border);
54 | }
55 | //Abstraction specific method
56 | @Override
57 | void modifyBorder(int border,int increment) {
58 | System.out.println("\nNow we are changing the border length "+increment+ " times");
59 | border=border*increment;
60 | drawShape(border);
61 | }
62 | }
63 |
64 | class Rectangle extends Shape
65 | {
66 | public Rectangle(IColor c)
67 | {
68 | super(c);
69 | }
70 | //Implementor specific method
71 | @Override
72 | void drawShape(int border)
73 | {
74 | System.out.print(" This Rectangle colored with: ");
75 | color.fillWithColor(border);
76 | }
77 | //Abstraction specific method
78 | @Override
79 | void modifyBorder(int border,int increment) {
80 | System.out.println("\n Now we are changing the border length "+increment+ " times");
81 | border=border*increment;
82 | drawShape(border);
83 | }
84 | }
85 |
86 |
87 | class BridgePatternDemo2
88 | {
89 | public static void main(String[] args)
90 | {
91 | System.out.println("*****BRIDGE PATTERN*****");
92 | //Coloring Green to Triangle
93 | System.out.println("\nColoring Triangle:");
94 | //IColor green = new GreenColor();
95 | IColor green = new GreenColor();
96 | Shape triangleShape = new Triangle(green);
97 | triangleShape.drawShape(20);
98 | triangleShape.modifyBorder(20, 3);
99 |
100 | //Coloring Red to Rectangle
101 | System.out.println("\n\nColoring Rectangle :");
102 | IColor red = new RedColor();
103 | Shape rectangleShape = new Rectangle(red);
104 | rectangleShape.drawShape(50);
105 | //Modifying the border length twice
106 | rectangleShape.modifyBorder(50,2);
107 |
108 | }
109 | }
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/GreenColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/GreenColor.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/IColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/IColor.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/Rectangle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/Rectangle.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/RedColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/RedColor.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/Shape.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/Shape.class
--------------------------------------------------------------------------------
/ApressCodes/BridgePattern2/bridge/pattern/demo2/Triangle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BridgePattern2/bridge/pattern/demo2/Triangle.class
--------------------------------------------------------------------------------
/ApressCodes/BuilderPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/BuilderPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | BuilderPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/BuilderPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/BuilderPattern/builder/pattern/demo/BuilderPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/BuilderPattern/builder/pattern/demo/BuilderPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/BuilderPattern/builder/pattern/demo/BuilderPatternEx.java:
--------------------------------------------------------------------------------
1 | package builder.pattern.demo;
2 | import java.util.LinkedList;
3 |
4 |
5 | // Builders common interface
6 | interface IBuilder
7 | {
8 | void BuildBody();
9 | void InsertWheels();
10 | void AddHeadlights();
11 | Product GetVehicle();
12 |
13 | }
14 |
15 | // Car is ConcreteBuilder
16 | class Car implements IBuilder
17 | {
18 | private Product product = new Product();
19 |
20 | @Override
21 | public void BuildBody()
22 | {
23 | product.Add("This is a body of a Car");
24 | }
25 | @Override
26 | public void InsertWheels()
27 | {
28 | product.Add("4 wheels are added");
29 | }
30 | @Override
31 | public void AddHeadlights()
32 | {
33 | product.Add("2 Headlights are added");
34 | }
35 | @Override
36 | public Product GetVehicle()
37 | {
38 | return product;
39 | }
40 |
41 | }
42 |
43 | // Motorcycle is a ConcreteBuilder
44 | class MotorCycle implements IBuilder
45 | {
46 | private Product product = new Product();
47 |
48 | @Override
49 | public void BuildBody()
50 | {
51 | product.Add("This is a body of a Motorcycle");
52 | }
53 | @Override
54 | public void InsertWheels()
55 | {
56 | product.Add("2 wheels are added");
57 | }
58 | @Override
59 | public void AddHeadlights()
60 | {
61 | product.Add("1 Headlights are added");
62 | }
63 | @Override
64 | public Product GetVehicle()
65 | {
66 | return product;
67 | }
68 | }
69 |
70 | // "Product"
71 | class Product
72 | {
73 | // We can use any data structure that you prefer.We have used LinkedList here.
74 | private LinkedList parts;
75 | public Product()
76 | {
77 | parts = new LinkedList();
78 | }
79 |
80 | public void Add(String part)
81 | {
82 | //Adding parts
83 | parts.addLast(part);
84 | }
85 |
86 | public void Show()
87 | {
88 | System.out.println("\n Product completed as below :");
89 | for(int i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ChainOfResponsibilityPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/ChainOfResponsibilityPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/ChainOfResponsibilityPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/ChainOfResponsibilityPatternEx.java:
--------------------------------------------------------------------------------
1 | package chainofresponsibility.pattern.demo;
2 | enum MessagePriority
3 | {
4 | Normal,
5 | High
6 | }
7 | class Message
8 | {
9 | public String Text;
10 | public MessagePriority Priority;
11 | public Message(String msg, MessagePriority p)
12 | {
13 | Text = msg;
14 | this.Priority = p;
15 | }
16 | }
17 |
18 |
19 | interface IReceiver
20 | {
21 | Boolean ProcessMessage(Message msg);
22 | }
23 | class IssueRaiser
24 | {
25 | public IReceiver setFirstReceiver;
26 | public IssueRaiser(IReceiver firstReceiver)
27 | {
28 | this.setFirstReceiver = firstReceiver;
29 | }
30 | public void RaiseMessage(Message msg)
31 | {
32 | if (setFirstReceiver != null)
33 | setFirstReceiver.ProcessMessage(msg);
34 | }
35 | }
36 | class FaxErrorHandler implements IReceiver
37 | {
38 | private IReceiver _nextReceiver;
39 | public FaxErrorHandler(IReceiver nextReceiver)
40 | {
41 | _nextReceiver = nextReceiver;
42 | }
43 | public Boolean ProcessMessage(Message msg)
44 | {
45 | if (msg.Text.contains("Fax"))
46 | {
47 | System.out.println("FaxErrorHandler processed "+ msg.Priority+ "priority issue: "+ msg.Text);
48 | return true;
49 | }
50 | else
51 | {
52 | if (_nextReceiver != null)
53 | _nextReceiver.ProcessMessage(msg);
54 | }
55 | return false;
56 | }
57 | }
58 | class EmailErrorHandler implements IReceiver
59 | {
60 | private IReceiver _nextReceiver;
61 | public EmailErrorHandler(IReceiver nextReceiver)
62 | {
63 | _nextReceiver = nextReceiver;
64 | }
65 | public Boolean ProcessMessage(Message msg)
66 | {
67 | if (msg.Text.contains("Email"))
68 | {
69 | System.out.println("EmailErrorHandler processed "+ msg.Priority+ "priority issue: "+ msg.Text);
70 | return true;
71 | }
72 | else
73 | {
74 | if (_nextReceiver != null)
75 | _nextReceiver.ProcessMessage(msg);
76 | }
77 | return false;
78 | }
79 | }
80 | class ChainOfResponsibilityPatternEx
81 | {
82 | public static void main(String[] args)
83 | {
84 | System.out.println("***Chain of Responsibility Pattern Demo***\n");
85 | //Making the chain first:IssueRaiser->FaxErrorhandler->EmailErrorHandler
86 | IReceiver faxHandler, emailHandler;
87 | //end of chain
88 | emailHandler = new EmailErrorHandler(null);
89 | //fax handler is before email
90 | faxHandler = new FaxErrorHandler(emailHandler);
91 |
92 | //starting point:rasiser will raise issues and set the first handler
93 | IssueRaiser raiser = new IssueRaiser(faxHandler);
94 |
95 | Message m1 = new Message("Fax is reaching late to the destination", MessagePriority.Normal);
96 | Message m2 = new Message("Email is not going", MessagePriority.High);
97 | Message m3 = new Message("In Email, BCC field is disabled occationally", MessagePriority.Normal);
98 | Message m4 = new Message("Fax is not reaching destination", MessagePriority.High);
99 |
100 | raiser.RaiseMessage(m1);
101 | raiser.RaiseMessage(m2);
102 | raiser.RaiseMessage(m3);
103 | raiser.RaiseMessage(m4);
104 |
105 | }
106 | }
107 |
108 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/EmailErrorHandler.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/EmailErrorHandler.class
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/FaxErrorHandler.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/FaxErrorHandler.class
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/IReceiver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/IReceiver.class
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/IssueRaiser.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/IssueRaiser.class
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/Message.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/Message.class
--------------------------------------------------------------------------------
/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/MessagePriority.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ChainOfResponsibilityPattern/chainofresponsibility/pattern/demo/MessagePriority.class
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ClassAndObjectAdapter
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ClassAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ClassAdapter.class
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ClassAndObjectAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ClassAndObjectAdapter.class
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ClassAndObjectAdapter.java:
--------------------------------------------------------------------------------
1 | package different.type.adapter;
2 | interface IIntegerValue
3 | {
4 | public int getInteger();
5 |
6 | }
7 | class IntegerValue implements IIntegerValue
8 | {
9 | @Override
10 | public int getInteger()
11 | {
12 | return 5;
13 | }
14 | }
15 | class ClassAdapter extends IntegerValue
16 | {
17 | //Incrementing by 2
18 | public int getInteger()
19 | {
20 | return 2+super.getInteger();
21 | }
22 | }
23 | class ObjectAdapter
24 | {
25 | private IIntegerValue myInt;
26 | public ObjectAdapter(IIntegerValue myInt)
27 | {
28 | this.myInt=myInt;
29 | }
30 | //Incrementing by 2
31 | public int getInteger()
32 | {
33 | return 2+this.myInt.getInteger();
34 | }
35 |
36 | }
37 |
38 | class ClassAndObjectAdapter
39 | {
40 | public static void main(String args[])
41 | {
42 | System.out.println("***Class and Object Adapter Demo***");
43 | ClassAdapter ca1=new ClassAdapter();
44 | System.out.println("Class Adapter is returning :"+ca1.getInteger());
45 |
46 | ClassAdapter ca2=new ClassAdapter();
47 | ObjectAdapter oa=new ObjectAdapter(new IntegerValue());
48 | System.out.println("Object Adapter is returning :"+oa.getInteger());
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/different/type/adapter/IIntegerValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ClassAndObjectAdapter/different/type/adapter/IIntegerValue.class
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/different/type/adapter/IntegerValue.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ClassAndObjectAdapter/different/type/adapter/IntegerValue.class
--------------------------------------------------------------------------------
/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ObjectAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ClassAndObjectAdapter/different/type/adapter/ObjectAdapter.class
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | CommandPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/CommandPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CommandPattern/command/pattern/demo/CommandPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/CommandPatternEx.java:
--------------------------------------------------------------------------------
1 | package command.pattern.demo;
2 |
3 | interface ICommand
4 | {
5 | void Do();
6 | }
7 |
8 | class MyUndoCommand implements ICommand
9 | {
10 | private Receiver receiver;
11 | MyUndoCommand(Receiver recv)
12 | {
13 | receiver=recv;
14 | }
15 | @Override
16 | public void Do()
17 | {
18 | //Call undo in receiver
19 | receiver.performUndo();
20 | }
21 | }
22 | class MyRedoCommand implements ICommand
23 | {
24 | private Receiver receiver;
25 | MyRedoCommand(Receiver recv)
26 | {
27 | receiver=recv;
28 | }
29 | @Override
30 | public void Do()
31 | {
32 | //Call redo in receiver
33 | receiver.performRedo();
34 | }
35 | }
36 | //Receiver class
37 | class Receiver
38 | {
39 | public void performUndo()
40 | {
41 | System.out.println("Executing -MyUndoCommand");
42 | }
43 | public void performRedo()
44 | {
45 | System.out.println("Executing -MyRedoCommand");
46 | }
47 | }
48 | //Invoker Class
49 | class Invoke
50 | {
51 | ICommand cmd;
52 | public void ExecuteCommand(ICommand cmd)
53 | {
54 | this.cmd=cmd;
55 | cmd.Do();
56 | }
57 | }
58 | //Client here
59 | class CommandPatternEx
60 | {
61 | public static void main(String[] args)
62 | {
63 | System.out.println("***Command Pattern Demo***\n");
64 | Receiver intendedreceiver=new Receiver();
65 | //Client holds Invoker and Command Objects
66 | Invoke inv = new Invoke();
67 | MyUndoCommand unCmd = new MyUndoCommand(intendedreceiver);
68 | MyRedoCommand reCmd = new MyRedoCommand(intendedreceiver);
69 | inv.ExecuteCommand(unCmd);
70 | inv.ExecuteCommand(reCmd);
71 | }
72 | }
73 |
74 |
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/ICommand.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CommandPattern/command/pattern/demo/ICommand.class
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/Invoke.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CommandPattern/command/pattern/demo/Invoke.class
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/MyRedoCommand.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CommandPattern/command/pattern/demo/MyRedoCommand.class
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/MyUndoCommand.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CommandPattern/command/pattern/demo/MyUndoCommand.class
--------------------------------------------------------------------------------
/ApressCodes/CommandPattern/command/pattern/demo/Receiver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CommandPattern/command/pattern/demo/Receiver.class
--------------------------------------------------------------------------------
/ApressCodes/CompositePattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/CompositePattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | CompositePattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/CompositePattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/CompositePattern/composite/pattern/demo/CompositePatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/CompositePattern/composite/pattern/demo/CompositePatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/CompositePattern/composite/pattern/demo/CompositePatternEx.java:
--------------------------------------------------------------------------------
1 | package composite.pattern.demo;
2 | import java.util.*;
3 | interface ITeacher
4 | {
5 | public String getDetails();
6 | }
7 | class Teacher implements ITeacher
8 | {
9 | private String teacherName;
10 | private String deptName;
11 | private List controls;
12 |
13 | Teacher(String teacherName, String deptName)
14 | {
15 | this.teacherName = teacherName;
16 | this.deptName = deptName;
17 | controls = new ArrayList();
18 | }
19 | public void Add(Teacher teacher)
20 | {
21 | controls.add(teacher);
22 | }
23 | public void Remove(Teacher teacher)
24 | {
25 | controls.remove(teacher);
26 | }
27 | public List getControllingDepts()
28 | {
29 | return controls;
30 | }
31 | @Override
32 | public String getDetails() {
33 | return (teacherName + " is the " + deptName);
34 | }
35 |
36 | }
37 | class CompositePatternEx
38 | {
39 | public static void main(String[] args)
40 | {
41 | Teacher Principal = new Teacher("Dr.S.Som","Principal");
42 |
43 | Teacher hodMaths = new Teacher("Mrs.S.Das","Hod-Math");
44 |
45 | Teacher hodCompSc = new Teacher("Mr. V.Sarcar","Hod-ComputerSc.");
46 |
47 | Teacher mathTeacher1 = new Teacher("Math Teacher-1","MathsTeacher");
48 | Teacher mathTeacher2 = new Teacher("Math Teacher-2","MathsTeacher");
49 |
50 | Teacher cseTeacher1 = new Teacher("CSE Teacher-1","CSETeacher");
51 | Teacher cseTeacher2 = new Teacher("CSE Teacher-2","CSETeacher");
52 | Teacher cseTeacher3 = new Teacher("CSE Teacher-3","CSETeacher");
53 |
54 | //Principal is on top of college
55 | //HOD -Maths and Comp. Sc directly reports to him
56 | Principal.Add(hodMaths);
57 | Principal.Add(hodCompSc);
58 |
59 | //Teachers of Mathematics directly reports to HOD-Maths
60 | hodMaths.Add(mathTeacher1);
61 | hodMaths.Add(mathTeacher2);
62 |
63 | //Teachers of Computer Sc directly reports to HOD-Comp.Sc
64 | hodCompSc.Add(cseTeacher1);
65 | hodCompSc.Add(cseTeacher2);
66 | hodCompSc.Add(cseTeacher3);
67 |
68 | //Leaf nodes.There is no department under Mathematics.
69 | mathTeacher1.Add(null);
70 | mathTeacher2.Add(null);
71 |
72 | //Leaf nodes.There is no department under CSE.
73 | cseTeacher1.Add(null);
74 | cseTeacher2.Add(null);
75 | cseTeacher3.Add(null);
76 |
77 | //Printing the details
78 | System.out.println("***COMPOSITE PATTERN DEMO ***");
79 | System.out.println("\nThe college has following structure\n");
80 | System.out.println(Principal.getDetails());
81 | List hods=Principal.getControllingDepts();
82 | for(int i=0;i mathTeachers=hodMaths.getControllingDepts();
88 | for(int i=0;i cseTeachers=hodCompSc.getControllingDepts();
94 | for(int i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | DecoratorPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/AbstractDecorator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/DecoratorPattern/decorator/pattern/demo/AbstractDecorator.class
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/Component.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/DecoratorPattern/decorator/pattern/demo/Component.class
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/ConcreteComponent.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/DecoratorPattern/decorator/pattern/demo/ConcreteComponent.class
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/ConcreteDecoratorEx_1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/DecoratorPattern/decorator/pattern/demo/ConcreteDecoratorEx_1.class
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/ConcreteDecoratorEx_2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/DecoratorPattern/decorator/pattern/demo/ConcreteDecoratorEx_2.class
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/DecoratorPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/DecoratorPattern/decorator/pattern/demo/DecoratorPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/DecoratorPattern/decorator/pattern/demo/DecoratorPatternEx.java:
--------------------------------------------------------------------------------
1 | package decorator.pattern.demo;
2 | abstract class Component
3 | {
4 | public abstract void doJob();
5 |
6 | }
7 | class ConcreteComponent extends Component
8 | {
9 | @Override
10 | public void doJob()
11 | {
12 | System.out.println(" I am from Concrete Component-I am closed for modification.");
13 |
14 | }
15 | }
16 |
17 | abstract class AbstractDecorator extends Component
18 | {
19 | protected Component com ;
20 | public void SetTheComponent(Component c)
21 | {
22 | com = c;
23 | }
24 | public void doJob()
25 | {
26 | if (com != null)
27 | {
28 | com.doJob();
29 | }
30 | }
31 |
32 | }
33 | class ConcreteDecoratorEx_1 extends AbstractDecorator
34 | {
35 | public void doJob()
36 | {
37 | super.doJob();
38 | //Add additional thing if necessary
39 | System.out.println("I am explicitly from Ex_1");
40 | }
41 | }
42 | class ConcreteDecoratorEx_2 extends AbstractDecorator
43 | {
44 | public void doJob()
45 | {
46 | System.out.println("");
47 | System.out.println("***START Ex-2***");
48 | super.doJob();
49 | //Add additional thing if necessary
50 | System.out.println("Explicitly From DecoratorEx_2");
51 | System.out.println("***END. EX-2***");
52 | }
53 | }
54 | class DecoratorPatternEx
55 | {
56 | public static void main(String[] args)
57 | {
58 | System.out.println("***Decorator pattern Demo***");
59 | ConcreteComponent cc = new ConcreteComponent();
60 |
61 | ConcreteDecoratorEx_1 cd_1 = new ConcreteDecoratorEx_1();
62 | cd_1.SetTheComponent(cc);
63 | cd_1.doJob();
64 |
65 | ConcreteDecoratorEx_2 cd_2= new ConcreteDecoratorEx_2();
66 | cd_2.SetTheComponent(cd_1);//Adding results from cd_1 now
67 | cd_2.doJob();
68 | }
69 | }
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | FacadePattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/facade/pattern/demo/FacadePatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FacadePattern/facade/pattern/demo/FacadePatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/facade/pattern/demo/FacadePatternEx.java:
--------------------------------------------------------------------------------
1 | package facade.pattern.demo;
2 | import robotfacade.RobotFacade;
3 |
4 | class FacadePatternEx
5 | {
6 | public static void main(String[] args)
7 | {
8 | System.out.println("***Facade Pattern Demo***");
9 | RobotFacade rf1 = new RobotFacade();
10 | rf1.ConstructRobot("Green", "Iron");
11 | RobotFacade rf2 = new RobotFacade();
12 | rf2.ConstructRobot("Blue", "Steel");
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotfacade/RobotFacade.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FacadePattern/robotfacade/RobotFacade.class
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotfacade/RobotFacade.java:
--------------------------------------------------------------------------------
1 | package robotfacade;
2 | import robotparts.*;
3 |
4 |
5 | public class RobotFacade
6 | {
7 | RobotColor rc;
8 | RobotMetal rm ;
9 | RobotBody rb;
10 | public RobotFacade()
11 | {
12 | rc = new RobotColor();
13 | rm = new RobotMetal();
14 | rb = new RobotBody();
15 |
16 | }
17 | public void ConstructRobot(String color,String metal)
18 | {
19 | System.out.println("\nCreation of the Robot Start");
20 | rc.SetColor(color);
21 | rm.SetMetal(metal);
22 | rb.CreateBody();
23 | System.out.println(" \nRobot Creation End");
24 | System.out.println();
25 | }
26 | }
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotparts/RobotBody.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FacadePattern/robotparts/RobotBody.class
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotparts/RobotBody.java:
--------------------------------------------------------------------------------
1 | package robotparts;
2 |
3 | public class RobotBody
4 | {
5 | public void CreateBody()
6 | {
7 | System.out.println("Body Creation done");
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotparts/RobotColor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FacadePattern/robotparts/RobotColor.class
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotparts/RobotColor.java:
--------------------------------------------------------------------------------
1 | package robotparts;
2 |
3 | public class RobotColor
4 | {
5 | private String color;
6 | public void SetColor(String color)
7 | {
8 | this.color = color;
9 | System.out.println("Color is set to : "+ this.color);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotparts/RobotMetal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FacadePattern/robotparts/RobotMetal.class
--------------------------------------------------------------------------------
/ApressCodes/FacadePattern/robotparts/RobotMetal.java:
--------------------------------------------------------------------------------
1 | package robotparts;
2 |
3 | public class RobotMetal
4 | {
5 | private String metal;
6 | public void SetMetal(String metal)
7 | {
8 | this.metal=metal;
9 | System.out.println("Metal is set to : "+this.metal);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | FactoryPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/ConcreteFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/ConcreteFactory.class
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/Duck.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/Duck.class
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/FactoryPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/FactoryPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/FactoryPatternEx.java:
--------------------------------------------------------------------------------
1 | package factory.pattern.demo;
2 | interface IAnimal
3 | {
4 | void Speak();
5 | }
6 | class Duck implements IAnimal
7 | {
8 | @Override
9 | public void Speak()
10 | {
11 | System.out.println("Duck says Pack-pack");
12 | }
13 | }
14 | class Tiger implements IAnimal
15 | {
16 | @Override
17 | public void Speak()
18 | {
19 | System.out.println("Tiger says: Halum..Halum");
20 |
21 | }
22 | }
23 |
24 | abstract class IAnimalFactory
25 | {
26 | public abstract IAnimal GetAnimalType(String type) throws Exception;//if we cannot instantiate later we'll throw exception
27 | }
28 | class ConcreteFactory extends IAnimalFactory
29 | {
30 | //IAnimal animalType;
31 | //Duck duck=null;
32 | //Tiger tiger=null;
33 | @Override
34 | public IAnimal GetAnimalType(String type) throws Exception
35 | {
36 | /*
37 | * IAnimal animal;
38 | if (type.Equals("Duck"))
39 | {
40 | animal = new Duck();
41 | }
42 | else
43 | {
44 | animal = new Tiger();
45 | }
46 | return animal;
47 |
48 | //OR-use the following codes-just a change. I wanted to use switch instead of if-else.
49 | //It is better readable when there are many options.
50 | */
51 |
52 | switch (type)
53 | {
54 | case "Duck":
55 | //duck= new Duck();
56 | //return duck;
57 | return new Duck();
58 | case "Tiger":
59 | //tiger= new Tiger();
60 | //return tiger;
61 | return new Tiger();
62 | default:
63 | throw new Exception( "Animal type : "+type+" cannot be instantiated");
64 | }
65 | }
66 | }
67 | class FactoryPatternEx
68 | {
69 | public static void main(String[] args) throws Exception
70 | {
71 | System.out.println("***Factory Pattern Demo***\n");
72 | IAnimalFactory animalFactory = new ConcreteFactory();
73 | IAnimal DuckType=animalFactory.GetAnimalType("Duck");
74 | DuckType.Speak();
75 |
76 | IAnimal TigerType = animalFactory.GetAnimalType("Tiger");
77 | TigerType.Speak();
78 | //There is no Lion type. So, an exception will be thrown
79 | IAnimal LionType = animalFactory.GetAnimalType("Lion");
80 | LionType.Speak();
81 |
82 | }
83 | }
84 |
85 |
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/IAnimal.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/IAnimal.class
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/IAnimalFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/IAnimalFactory.class
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/Tiger.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/Tiger.class
--------------------------------------------------------------------------------
/ApressCodes/FactoryPattern/factory/pattern/demo/Tiger.class.bak:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FactoryPattern/factory/pattern/demo/Tiger.class.bak
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | FlyweightPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/flyweight/pattern/demo/FlyweightPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPattern/flyweight/pattern/demo/FlyweightPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/flyweight/pattern/demo/FlyweightPatternEx.java:
--------------------------------------------------------------------------------
1 | package flyweight.pattern.demo;
2 | import java.util.HashMap;
3 | import java.util.Map;
4 |
5 | /**
6 | * @author sarcarv
7 | * Our interface
8 | *
9 | */
10 | interface IRobot
11 | {
12 | void Print();
13 | }
14 |
15 | /**
16 | * @author sarcarv
17 | * A 'ConcreteFlyweight' class-SmallRobot
18 | *
19 | */
20 | class SmallRobot implements IRobot
21 | {
22 | @Override
23 | public void Print()
24 | {
25 | System.out.println(" This is a Small Robot");
26 | }
27 | }
28 |
29 |
30 | /**
31 | * @author sarcarv
32 | * A 'ConcreteFlyweight' class-LargeRobot
33 | *
34 | */
35 | class LargeRobot implements IRobot
36 | {
37 | @Override
38 | public void Print()
39 | {
40 | System.out.println(" I am a Large Robot");
41 | }
42 | }
43 |
44 | /**
45 | * @author sarcarv
46 | * The 'FlyweightFactory' class
47 | *
48 | */
49 | class RobotFactory
50 | {
51 | Map shapes = new HashMap();
52 |
53 | public int TotalObjectsCreated()
54 | {
55 | return shapes.size();
56 | }
57 |
58 | public IRobot GetRobotFromFactory(String RobotCategory) throws Exception
59 | {
60 | IRobot robotCategory = null;
61 | if (shapes.containsKey(RobotCategory))
62 | {
63 | robotCategory = shapes.get(RobotCategory);
64 | }
65 | else
66 | {
67 | switch (RobotCategory)
68 | {
69 | case "small":
70 | System.out.println("We do not have Small Robot.So we are creating a Small Robot now.");
71 | robotCategory = new SmallRobot();
72 | shapes.put("small", robotCategory);
73 | break;
74 | case "large":
75 | System.out.println("We do not have Large Robot.So we are creating a Large Robot now .");
76 | robotCategory = new LargeRobot();
77 | shapes.put("large", robotCategory);
78 | break;
79 | default:
80 | throw new Exception(" Robot Factory can create only small and large shapes");
81 | }
82 | }
83 | return robotCategory;
84 | }
85 |
86 | }
87 | /**
88 | * @author sarcarv
89 | *FlyweightPattern is in action.
90 | */
91 |
92 | class FlyweightPatternEx
93 | {
94 | public static void main(String[] args) throws Exception
95 | {
96 | RobotFactory myfactory = new RobotFactory();
97 | System.out.println("\n***Flyweight Pattern Example***\n");
98 |
99 | IRobot shape = myfactory.GetRobotFromFactory("small");
100 | shape.Print();
101 | //Here we are trying to get the objects additional 2 times.
102 | //Note that: now onwards we need not create additional small robots-we have already created of this category.
103 | for (int i = 0; i < 2; i++)
104 | {
105 | shape = myfactory.GetRobotFromFactory("small");
106 | shape.Print();
107 | }
108 | int NumOfDistinctRobots = myfactory.TotalObjectsCreated();
109 | System.out.println("\nDistinct Robot objects created till now= "+ NumOfDistinctRobots);
110 |
111 | //Here we are trying to get the objects 5 times.
112 | //Note that: second time onwards we need not create additional large robots-we have already created of this category on first attempt(at i=0)
113 | for (int i = 0; i < 5; i++)
114 | {
115 | shape = myfactory.GetRobotFromFactory("large");
116 | shape.Print();
117 | }
118 |
119 | NumOfDistinctRobots = myfactory.TotalObjectsCreated();
120 | System.out.println("\n Finally no of Distinct Robot objects created: "+ NumOfDistinctRobots);
121 | }
122 | }
123 |
124 |
125 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/flyweight/pattern/demo/IRobot.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPattern/flyweight/pattern/demo/IRobot.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/flyweight/pattern/demo/LargeRobot.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPattern/flyweight/pattern/demo/LargeRobot.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/flyweight/pattern/demo/RobotFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPattern/flyweight/pattern/demo/RobotFactory.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPattern/flyweight/pattern/demo/SmallRobot.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPattern/flyweight/pattern/demo/SmallRobot.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | FlyweightPatternModified
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/FlyweightPatternModifiedEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/FlyweightPatternModifiedEx.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/FlyweightPatternModifiedEx.java:
--------------------------------------------------------------------------------
1 | package flyweight.pattern.modified.demo;
2 | import java.util.HashMap;
3 | import java.util.Map;
4 | import java.util.Random;
5 |
6 | /**
7 | * @author sarcarv
8 | * Our interface
9 | *
10 | */
11 | interface IRobot
12 | {
13 | void Print();
14 | }
15 |
16 | /**
17 | * @author sarcarv
18 | * A 'ConcreteFlyweight' class-SmallRobot
19 | *
20 | */
21 | class Robot implements IRobot
22 | {
23 | String robotType;
24 | public String colorOfRobot;
25 | public Robot(String robotType)
26 | {
27 | this.robotType=robotType;
28 | }
29 | public void setColor(String colorOfRobot)
30 | {
31 | this.colorOfRobot=colorOfRobot;
32 | }
33 | @Override
34 | public void Print()
35 | {
36 | System.out.println(" This is a " +robotType+ " type robot with "+colorOfRobot+ "color");
37 | }
38 | }
39 |
40 | /**
41 | * @author sarcarv
42 | * The 'FlyweightFactory' class
43 | *
44 | */
45 | class RobotFactory
46 | {
47 | Map shapes = new HashMap();
48 |
49 | public int TotalObjectsCreated()
50 | {
51 | return shapes.size();
52 | }
53 |
54 | public IRobot GetRobotFromFactory(String robotType) throws Exception
55 | {
56 | IRobot robotCategory= null;
57 | if (shapes.containsKey(robotType))
58 | {
59 | robotCategory = shapes.get(robotType);
60 | }
61 | else
62 | {
63 | switch (robotType)
64 | {
65 | case "King":
66 | System.out.println("We do not have King Robot.So we are creating a King Robot now.");
67 | robotCategory = new Robot("King");
68 | shapes.put("King",robotCategory);
69 | break;
70 | case "Queen":
71 | System.out.println("We do not have Queen Robot.So we are creating a Queen Robot now.");
72 | robotCategory = new Robot("Queen");
73 | shapes.put("Queen",robotCategory);
74 | break;
75 | default:
76 | throw new Exception(" Robot Factory can create only king and queen type robots");
77 | }
78 | }
79 | return robotCategory;
80 | }
81 |
82 | }
83 | /**
84 | * @author sarcarv
85 | *FlyweightPattern is in action.
86 | */
87 |
88 | class FlyweightPatternModifiedEx
89 | {
90 | public static void main(String[] args) throws Exception
91 | {
92 | RobotFactory myfactory = new RobotFactory();
93 | System.out.println("\n***Flyweight Pattern Example Modified***\n");
94 | Robot shape;
95 | //Here we are trying to get 3 king type robots
96 | for (int i = 0; i < 3; i++)
97 | {
98 | shape =(Robot) myfactory.GetRobotFromFactory("King");
99 | shape.setColor(getRandomColor());
100 | shape.Print();
101 | }
102 | //Here we are trying to get 3 queen type robots
103 | for (int i = 0; i < 3; i++)
104 | {
105 | shape =(Robot) myfactory.GetRobotFromFactory("Queen");
106 | shape.setColor(getRandomColor());
107 | shape.Print();
108 | }
109 | int NumOfDistinctRobots = myfactory.TotalObjectsCreated();
110 | //System.out.println("\nDistinct Robot objects created till now= "+ NumOfDistinctRobots);
111 | System.out.println("\n Finally no of Distinct Robot objects created: "+ NumOfDistinctRobots);
112 | }
113 | static String getRandomColor()
114 | {
115 | Random r=new Random();
116 | /*You can supply any number of your choice in nextInt argument.
117 | * we are simply checking the random number generated is an even number
118 | * or and odd number.And based on that we are choosing the color.
119 | * For simplicity, we'll use only two color-red and green
120 | */
121 |
122 | int random=r.nextInt(20);
123 | if(random%2==0)
124 | {
125 | return "red";
126 | }
127 | else
128 | {
129 | return "green";
130 | }
131 | }
132 | }
133 |
134 |
135 |
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/IRobot.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/IRobot.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/Robot.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/Robot.class
--------------------------------------------------------------------------------
/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/RobotFactory.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/FlyweightPatternModified/flyweight/pattern/modified/demo/RobotFactory.class
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | InterpreterPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/interpreter/pattern/demo/Context.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/InterpreterPattern/interpreter/pattern/demo/Context.class
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/interpreter/pattern/demo/IExpression.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/InterpreterPattern/interpreter/pattern/demo/IExpression.class
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/interpreter/pattern/demo/IntToWords.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/InterpreterPattern/interpreter/pattern/demo/IntToWords.class
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/interpreter/pattern/demo/InterpreterPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/InterpreterPattern/interpreter/pattern/demo/InterpreterPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/InterpreterPattern/interpreter/pattern/demo/InterpreterPatternEx.java:
--------------------------------------------------------------------------------
1 | package interpreter.pattern.demo;
2 |
3 | import java.util.Scanner;
4 |
5 | /*Context class:interpretion is carried out based on our implementation.*/
6 | class Context
7 | {
8 | public String input;
9 | public Context(String input)
10 | {
11 | this.input=input;
12 | }
13 | public void getBinaryForm(String input)
14 | {
15 | int i = Integer.parseInt(input);
16 | //integer to its equivalent binary string representation
17 | String binaryString = Integer.toBinaryString(i);
18 | System.out.println("Binary equivalent of "+input+ " is "+ binaryString);
19 | }
20 | public void printInWords(String input)
21 | {
22 | this.input = input;
23 | System.out.println("Printing the input in words:");
24 | char c[]=input.toCharArray();
25 | for(int i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | IteratorPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/Arts$ArtsIterator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/aggregate/Arts$ArtsIterator.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/Arts.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/aggregate/Arts.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/Arts.java:
--------------------------------------------------------------------------------
1 | package aggregate;
2 | import iterator.*;
3 |
4 | public class Arts implements ISubject
5 | {
6 | private String[] subjects;
7 |
8 | public Arts()
9 | {
10 | subjects = new String[2];
11 | subjects[0] = "Bengali";
12 | subjects[1] = "English" ;
13 | }
14 |
15 | public IIterator CreateIterator()
16 | {
17 | return new ArtsIterator(subjects);
18 | }
19 | //Containing the iterator
20 | public class ArtsIterator implements IIterator
21 | {
22 | private String[] subjects;
23 | private int position;
24 | public ArtsIterator(String[] subjects)
25 | {
26 | this.subjects = subjects;
27 | position = 0;
28 | }
29 | public void First()
30 | {
31 | position = 0;
32 | }
33 |
34 | public String Next()
35 | {
36 | return subjects[position++];
37 | }
38 |
39 | public Boolean IsDone()
40 | {
41 | return position >= subjects.length;
42 | }
43 |
44 | public String CurrentItem()
45 | {
46 | return subjects[position];
47 | }
48 | }
49 |
50 | }
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/ISubject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/aggregate/ISubject.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/ISubject.java:
--------------------------------------------------------------------------------
1 | package aggregate;
2 | import iterator.*;
3 |
4 | public interface ISubject
5 | {
6 | public IIterator CreateIterator();
7 | }
8 |
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/Science$ScienceIterator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/aggregate/Science$ScienceIterator.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/Science.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/aggregate/Science.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/aggregate/Science.java:
--------------------------------------------------------------------------------
1 | package aggregate;
2 | import java.util.LinkedList;//for Linked List data structure used here
3 | import iterator.*;
4 |
5 | public class Science implements ISubject
6 | {
7 | private LinkedList subjects;
8 |
9 | public Science()
10 | {
11 | subjects = new LinkedList();
12 | subjects.addLast("Maths");
13 | subjects.addLast("Comp. Sc.");
14 | subjects.addLast("Physics");
15 | }
16 | @Override
17 | public IIterator CreateIterator()
18 | {
19 | return new ScienceIterator(subjects);
20 | }
21 | //Containing the iterator
22 | public class ScienceIterator implements IIterator
23 | {
24 | private LinkedList subjects;
25 | private int position;
26 |
27 | public ScienceIterator(LinkedList subjects)
28 | {
29 | this.subjects = subjects;
30 | position = 0;
31 | }
32 |
33 | public void First()
34 | {
35 | position = 0;
36 | }
37 |
38 | public String Next()
39 | {
40 | return subjects.get(position++);
41 | }
42 |
43 | public Boolean IsDone()
44 | {
45 | return position >= subjects.size();
46 | }
47 |
48 | public String CurrentItem()
49 | {
50 | return subjects.get(position);
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/iterator/IIterator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/iterator/IIterator.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/iterator/IIterator.java:
--------------------------------------------------------------------------------
1 | package iterator;
2 |
3 | public interface IIterator
4 | {
5 | void First();//Reset to first element
6 | String Next();//get next element
7 | Boolean IsDone();//End of collection check
8 | String CurrentItem();//Retrieve Current Item
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/iteratorpattern/demo/IteratorPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/IteratorPattern/iteratorpattern/demo/IteratorPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/IteratorPattern/iteratorpattern/demo/IteratorPatternEx.java:
--------------------------------------------------------------------------------
1 | package iteratorpattern.demo;
2 | import iterator.*;
3 | import aggregate.*;
4 |
5 | class IteratorPatternEx
6 | {
7 | public static void main(String[] args)
8 | {
9 | System.out.println("***Iterator Pattern Demo***\n");
10 | ISubject Sc_subject = new Science();
11 | ISubject Ar_subjects = new Arts();
12 |
13 | IIterator Sc_iterator = Sc_subject.CreateIterator();
14 | IIterator Ar_iterator = Ar_subjects.CreateIterator();
15 |
16 | System.out.println("\nScience subjects :");
17 | Print(Sc_iterator);
18 |
19 | System.out.println("\nArts subjects :");
20 | Print(Ar_iterator);
21 | }
22 |
23 | public static void Print(IIterator iterator)
24 | {
25 | while (!iterator.IsDone())
26 | {
27 | System.out.println(iterator.Next());
28 | }
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | MediatorPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/Boss.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/Boss.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/ConcreteMediator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/ConcreteMediator.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/Friend.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/Friend.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/Friend1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/Friend1.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/Friend2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/Friend2.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/Mediator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/Mediator.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/MediatorPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MediatorPattern/mediator/pattern/demo/MediatorPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/MediatorPattern/mediator/pattern/demo/MediatorPatternEx.java:
--------------------------------------------------------------------------------
1 | package mediator.pattern.demo;
2 |
3 | abstract class Mediator
4 | {
5 | public abstract void Send(Friend frd, String msg);
6 | }
7 |
8 | // ConcreteMediator
9 | class ConcreteMediator extends Mediator
10 | {
11 | private Friend1 friend1;
12 | private Friend2 friend2;
13 | private Boss boss;
14 |
15 | //In this example,setters are sufficient.
16 |
17 | public void setFriend1(Friend1 friend1) {
18 | this.friend1 = friend1;
19 | }
20 |
21 | public void setFriend2(Friend2 friend2) {
22 | this.friend2 = friend2;
23 | }
24 |
25 | public void setBoss(Boss boss) {
26 | this.boss = boss;
27 | }
28 |
29 | @Override
30 | public void Send(Friend frd,String msg)
31 | {
32 | //In all case, boss is notified
33 | if (frd == friend1)
34 | {
35 | friend2.Notify(msg);
36 | boss.Notify(friend1.name + " sends message to " + friend2.name);
37 | }
38 | if(frd==friend2)
39 | {
40 | friend1.Notify(msg);
41 | boss.Notify(friend2.name + " sends message to " + friend1.name);
42 |
43 | }
44 | //Boss is sending message to others
45 | if(frd==boss)
46 | {
47 | friend1.Notify(msg);
48 | friend2.Notify(msg);
49 | }
50 | }
51 |
52 |
53 | }
54 |
55 | // Friend
56 | abstract class Friend
57 | {
58 | protected Mediator mediator;
59 | public String name;
60 |
61 | // Constructor
62 | public Friend(Mediator _mediator)
63 | {
64 | mediator = _mediator;
65 | }
66 | }
67 |
68 | // Friend1-first participant
69 | class Friend1 extends Friend
70 | {
71 | public Friend1(Mediator mediator,String name)
72 | {
73 | super(mediator);
74 | this.name = name;
75 | }
76 |
77 | public void Send(String msg)
78 | {
79 | mediator.Send(this,msg);
80 | }
81 |
82 | public void Notify(String msg)
83 | {
84 | System.out.println("Amit gets message: "+ msg);
85 | }
86 | }
87 |
88 | // Friend2-Second participant
89 | class Friend2 extends Friend
90 | {
91 | // Constructor
92 | public Friend2(Mediator mediator,String name)
93 | {
94 | super(mediator);
95 | this.name = name;
96 | }
97 |
98 | public void Send(String msg)
99 | {
100 | mediator.Send(this,msg);
101 | }
102 |
103 | public void Notify(String msg)
104 | {
105 | System.out.println("Sohel gets message: "+ msg);
106 | }
107 | }
108 | // Friend3-Third Participant.He is the boss.He is notified whenever friend1 and friend2 communicates.
109 | class Boss extends Friend
110 | {
111 | // Constructor
112 | public Boss(Mediator mediator,String name)
113 | {
114 | super(mediator);
115 | this.name = name;
116 | }
117 |
118 | public void Send(String msg)
119 | {
120 | mediator.Send(this, msg);
121 | }
122 |
123 | public void Notify(String msg)
124 | {
125 | System.out.println("\nBoss sees message: " + msg);
126 | System.out.println("");
127 | }
128 | }
129 |
130 | class MediatorPatternEx
131 | {
132 | public static void main(String[] args)
133 | {
134 | System.out.println("***Mediator Pattern Demo***\n");
135 | ConcreteMediator m = new ConcreteMediator();
136 |
137 | Friend1 Amit= new Friend1(m,"Amit");
138 | Friend2 Sohel = new Friend2(m,"Sohel");
139 | Boss Raghu = new Boss(m,"Raghu");
140 |
141 | m.setFriend1(Amit);
142 | m.setFriend2(Sohel);
143 | m.setBoss(Raghu);
144 |
145 | Amit.Send("[Amit here]Good Morrning. Can we discuss the mediator pattern?");
146 | Sohel.Send("[Sohel here]Good Morning.Yes, we can discuss now.");
147 | Raghu.Send("\n[Raghu here]:Please get back to work quickly");
148 |
149 |
150 | }
151 | }
152 |
153 |
154 |
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | MementoPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/memento/pattern/demo/Caretaker.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MementoPattern/memento/pattern/demo/Caretaker.class
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/memento/pattern/demo/Memento.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MementoPattern/memento/pattern/demo/Memento.class
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/memento/pattern/demo/MementoPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MementoPattern/memento/pattern/demo/MementoPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/memento/pattern/demo/MementoPatternEx.java:
--------------------------------------------------------------------------------
1 | package memento.pattern.demo;
2 |
3 | // Memento class
4 |
5 | class Memento
6 | {
7 | private String state;
8 |
9 | public Memento(String state)
10 | {
11 | this.state = state;
12 | }
13 |
14 | public String getState()
15 | {
16 | return state;
17 | }
18 |
19 | }
20 |
21 | // Originator class
22 |
23 | class Originator
24 | {
25 | private String state;
26 | Memento m;
27 |
28 | public void setState(String state)
29 | {
30 | this.state = state;
31 | System.out.println("State at present : " +state);
32 | }
33 |
34 | // Creates memento
35 | public Memento OriginatorMemento()
36 | {
37 | m = new Memento(state);
38 | return m;
39 | }
40 |
41 |
42 | // Back to old state
43 | public void Revert(Memento memento)
44 | {
45 | System.out.println("Restoring to previous state...");
46 | state = memento.getState();
47 | System.out.println("State at present :" +state);
48 | }
49 | }
50 |
51 |
52 |
53 | //Caretaker Class
54 | class Caretaker
55 | {
56 | private Memento _memento;
57 |
58 | public void SaveMemento(Memento m)
59 | {
60 | _memento = m;
61 | }
62 | public Memento RetrieveMemento()
63 | {
64 | return _memento;
65 | }
66 |
67 | }
68 |
69 | class MementoPatternEx
70 | {
71 | public static void main(String[] args)
72 | {
73 | System.out.println("***Memento Pattern Demo***\n");
74 | Originator o = new Originator();
75 | o.setState("First state");
76 |
77 | // Holding old state
78 | Caretaker c = new Caretaker();
79 | c.SaveMemento(o.OriginatorMemento());
80 |
81 | //Changing state
82 | o.setState("Second state");
83 |
84 | // Restore saved state
85 | o.Revert(c.RetrieveMemento());
86 |
87 | }
88 | }
89 |
90 |
--------------------------------------------------------------------------------
/ApressCodes/MementoPattern/memento/pattern/demo/Originator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/MementoPattern/memento/pattern/demo/Originator.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ObserverPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/observer/pattern/demo/ISubject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPattern/observer/pattern/demo/ISubject.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/observer/pattern/demo/Observer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPattern/observer/pattern/demo/Observer.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/observer/pattern/demo/ObserverPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPattern/observer/pattern/demo/ObserverPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPattern/observer/pattern/demo/ObserverPatternEx.java:
--------------------------------------------------------------------------------
1 | package observer.pattern.demo;
2 | import java.util.*;
3 |
4 | /* interface IObserver
5 | {
6 | void update();
7 | }*/
8 | //class Observer implements IObserver
9 | class Observer
10 | {
11 | //@Override
12 | public void update()
13 | {
14 | System.out.println("flag value changed in Subject");
15 | }
16 | }
17 |
18 | interface ISubject
19 | {
20 | void register(Observer o);
21 | void unregister( Observer o);
22 | void notifyObservers();
23 | }
24 | class Subject implements ISubject
25 | {
26 | //List observerList = new ArrayList();
27 | List observerList = new ArrayList();
28 | private int _flag;
29 | public int getFlag()
30 | {
31 | return _flag;
32 | }
33 | public void setFlag(int _flag)
34 | {
35 | this._flag=_flag;
36 | //flag value changed .So notify observer(s)
37 | notifyObservers();
38 | }
39 | @Override
40 | public void register(Observer o)
41 | {
42 | observerList.add(o);
43 | }
44 | @Override
45 | public void unregister(Observer o)
46 | {
47 | observerList.remove(o);
48 | }
49 | @Override
50 | public void notifyObservers()
51 | {
52 | for(int i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ObserverPatternDemo3
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/IObserver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/IObserver.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/ISubject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/ISubject.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/Observer1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/Observer1.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/Observer2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/Observer2.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/Observer3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/Observer3.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/ObserverPatternDemo3Ex.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/ObserverPatternDemo3Ex.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternDemo3/observer/pattern/demo3/ObserverPatternDemo3Ex.java:
--------------------------------------------------------------------------------
1 | package observer.pattern.demo3;
2 |
3 | import java.util.*;
4 |
5 | interface IObserver
6 | {
7 | void update(String s,int i);
8 | }
9 | class Observer1 implements IObserver
10 | {
11 | @Override
12 | public void update(String s,int i)
13 | {
14 | System.out.println("Observer1: myValue in "+ s+ " is now: "+i);
15 | }
16 | }
17 | class Observer2 implements IObserver
18 | {
19 | @Override
20 | public void update(String s,int i)
21 | {
22 | System.out.println("Observer2: observes ->myValue is changed in "+s+" to :"+i);
23 | }
24 | }
25 | class Observer3 implements IObserver
26 | {
27 | @Override
28 | public void update(String s,int i)
29 | {
30 | System.out.println("Observer3 is observing:myValue is changed in "+s+" to :"+i);
31 | }
32 | }
33 |
34 | interface ISubject
35 | {
36 | void register(IObserver o);
37 | void unregister(IObserver o);
38 | void notifyObservers(int i);
39 | }
40 |
41 | class Subject1 implements ISubject
42 | {
43 | private int myValue;
44 |
45 |
46 | public int getMyValue() {
47 | return myValue;
48 | }
49 |
50 | public void setMyValue(int myValue) {
51 | this.myValue = myValue;
52 | //Notify observers
53 | notifyObservers(myValue);
54 | }
55 |
56 | List observersList=new ArrayList();
57 |
58 | @Override
59 | public void register(IObserver o)
60 | {
61 | observersList.add(o);
62 | }
63 | @Override
64 | public void unregister(IObserver o)
65 | {
66 | observersList.remove(o);
67 | }
68 | @Override
69 | public void notifyObservers(int updatedValue)
70 | {
71 | for(int i=0;i observersList=new ArrayList();
93 |
94 | @Override
95 | public void register(IObserver o)
96 | {
97 | observersList.add(o);
98 | }
99 | @Override
100 | public void unregister(IObserver o)
101 | {
102 | observersList.remove(o);
103 | }
104 | @Override
105 | public void notifyObservers(int updatedValue)
106 | {
107 | for(int i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ObserverPatternModified
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/observer/pattern/demo2/IObserver.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternModified/observer/pattern/demo2/IObserver.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/observer/pattern/demo2/ISubject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternModified/observer/pattern/demo2/ISubject.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/observer/pattern/demo2/Observer1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternModified/observer/pattern/demo2/Observer1.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/observer/pattern/demo2/Observer2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternModified/observer/pattern/demo2/Observer2.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/observer/pattern/demo2/ObserverPatternModifiedEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ObserverPatternModified/observer/pattern/demo2/ObserverPatternModifiedEx.class
--------------------------------------------------------------------------------
/ApressCodes/ObserverPatternModified/observer/pattern/demo2/ObserverPatternModifiedEx.java:
--------------------------------------------------------------------------------
1 | package observer.pattern.demo2;
2 | import java.util.*;
3 |
4 | interface IObserver
5 | {
6 | void update(int i);
7 | }
8 | class Observer1 implements IObserver
9 | {
10 | @Override
11 | public void update(int i)
12 | {
13 | System.out.println("Observer1: myValue in Subject is now: "+i);
14 | }
15 | }
16 | class Observer2 implements IObserver
17 | {
18 | @Override
19 | public void update(int i)
20 | {
21 | System.out.println("Observer2: observes ->myValue is changed in Subject to :"+i);
22 | }
23 | }
24 |
25 | interface ISubject
26 | {
27 | void register(IObserver o);
28 | void unregister(IObserver o);
29 | void notifyObservers(int i);
30 | }
31 |
32 | class Subject implements ISubject
33 | {
34 | private int myValue;
35 |
36 |
37 | public int getMyValue() {
38 | return myValue;
39 | }
40 |
41 | public void setMyValue(int myValue) {
42 | this.myValue = myValue;
43 | //Notify observers
44 | notifyObservers(myValue);
45 | }
46 |
47 | List observersList=new ArrayList();
48 |
49 | @Override
50 | public void register(IObserver o)
51 | {
52 | observersList.add(o);
53 | }
54 | @Override
55 | public void unregister(IObserver o)
56 | {
57 | observersList.remove(o);
58 | }
59 | @Override
60 | public void notifyObservers(int updatedValue)
61 | {
62 | for(int i=0;i
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | PrototypePattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/car/BasicCar.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/PrototypePattern/car/BasicCar.class
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/car/BasicCar.java:
--------------------------------------------------------------------------------
1 | package car;
2 | import java.util.Random;
3 |
4 | public abstract class BasicCar implements Cloneable
5 | {
6 | public String modelname;
7 | public int price;
8 |
9 | public String getModelname() {
10 | return modelname;
11 | }
12 | public void setModelname(String modelname) {
13 | this.modelname = modelname;
14 | }
15 |
16 | public static int setPrice()
17 | {
18 | int price = 0;
19 | Random r = new Random();
20 | int p = r.nextInt(100000);
21 | price = p;
22 | return price;
23 | }
24 | public BasicCar clone() throws CloneNotSupportedException
25 | {
26 | return (BasicCar)super.clone();
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/car/Ford.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/PrototypePattern/car/Ford.class
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/car/Ford.java:
--------------------------------------------------------------------------------
1 | package car;
2 |
3 | public class Ford extends BasicCar
4 | {
5 | public Ford(String m)
6 | {
7 | modelname = m;
8 | }
9 |
10 | @Override
11 | public BasicCar clone() throws CloneNotSupportedException
12 | {
13 | return (Ford)super.clone();
14 | }
15 | }
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/car/Nano.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/PrototypePattern/car/Nano.class
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/car/Nano.java:
--------------------------------------------------------------------------------
1 | package car;
2 |
3 | public class Nano extends BasicCar
4 | {
5 | public Nano(String m)
6 | {
7 | modelname = m;
8 | }
9 | @Override
10 | public BasicCar clone() throws CloneNotSupportedException
11 | {
12 | return (Nano)super.clone();
13 | //return this.clone();
14 | }
15 | }
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/prototype/pattern/demo/PrototypePatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/PrototypePattern/prototype/pattern/demo/PrototypePatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/PrototypePattern/prototype/pattern/demo/PrototypePatternEx.java:
--------------------------------------------------------------------------------
1 | package prototype.pattern.demo;
2 | import car.BasicCar;
3 | import car.Ford;
4 | import car.Nano;
5 | //import car.*;
6 |
7 | public class PrototypePatternEx
8 | {
9 | public static void main(String[] args) throws CloneNotSupportedException
10 | {
11 | System.out.println("***Prototype Pattern Demo***\n");
12 | BasicCar nano_base = new Nano("Green Nano") ;
13 | nano_base.price=100000;
14 |
15 | BasicCar ford_basic = new Ford("Ford Yellow");
16 | ford_basic.price=500000;
17 |
18 | BasicCar bc1;
19 | //Nano
20 | bc1 =nano_base.clone();
21 | //Price will be more than 100000 for sure
22 | bc1.price = nano_base.price+BasicCar.setPrice();
23 | System.out.println("Car is: "+ bc1.modelname+" and it's price is Rs."+bc1.price);
24 |
25 | //Ford
26 | bc1 =ford_basic.clone();
27 | //Price will be more than 500000 for sure
28 | bc1.price = ford_basic.price+BasicCar.setPrice();
29 | System.out.println("Car is: "+ bc1.modelname+" and it's price is Rs."+bc1.price);
30 |
31 |
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ProxyPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/OriginalClasses/ConcreteSubject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ProxyPattern/OriginalClasses/ConcreteSubject.class
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/OriginalClasses/ConcreteSubject.java:
--------------------------------------------------------------------------------
1 | package OriginalClasses;
2 | import OriginalClasses.Subject;
3 |
4 | public class ConcreteSubject extends Subject
5 | {
6 |
7 | @Override
8 | public void doSomeWork()
9 | {
10 | System.out.println(" I am from concrete subject");
11 | }
12 | }
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/OriginalClasses/Subject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ProxyPattern/OriginalClasses/Subject.class
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/OriginalClasses/Subject.java:
--------------------------------------------------------------------------------
1 | package OriginalClasses;
2 |
3 | public abstract class Subject
4 | {
5 | public abstract void doSomeWork();
6 | }
7 |
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/ProxyClasses/Proxy.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ProxyPattern/ProxyClasses/Proxy.class
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/ProxyClasses/Proxy.java:
--------------------------------------------------------------------------------
1 | package ProxyClasses;
2 | import OriginalClasses.*;
3 |
4 | public class Proxy extends Subject
5 | {
6 | ConcreteSubject cs;
7 | @Override
8 | public void doSomeWork()
9 | {
10 | System.out.println("Proxy call happening now");
11 | //Lazy initialization
12 | if (cs == null)
13 | {
14 | cs = new ConcreteSubject();
15 | }
16 | cs.doSomeWork();
17 | }
18 | }
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/proxy/pattern/demo/ProxyPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/ProxyPattern/proxy/pattern/demo/ProxyPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/ProxyPattern/proxy/pattern/demo/ProxyPatternEx.java:
--------------------------------------------------------------------------------
1 | package proxy.pattern.demo;
2 | import ProxyClasses.Proxy;
3 |
4 | class ProxyPatternEx
5 | {
6 | public static void main(String[] args)
7 | {
8 |
9 | System.out.println("***Proxy Pattern Demo***\n");
10 | Proxy px = new Proxy();
11 | px.doSomeWork();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | SingletonPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/singleton/pattern/demo/MakeACaptain$SingletonHelper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/SingletonPattern/singleton/pattern/demo/MakeACaptain$SingletonHelper.class
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/singleton/pattern/demo/MakeACaptain.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/SingletonPattern/singleton/pattern/demo/MakeACaptain.class
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/singleton/pattern/demo/SingletonPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/SingletonPattern/singleton/pattern/demo/SingletonPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/SingletonPattern/singleton/pattern/demo/SingletonPatternEx.java:
--------------------------------------------------------------------------------
1 | package singleton.pattern.demo;
2 |
3 | class MakeACaptain
4 | {
5 | private static MakeACaptain _captain;
6 | //We make the constructor private to prevent the use of "new"
7 | private MakeACaptain() { }
8 |
9 |
10 | // public static synchronized MakeACaptain getCaptain()
11 | /* public static MakeACaptain getCaptain()
12 | {
13 |
14 | // Lazy initialization
15 | if (_captain == null)
16 | { _captain = new MakeACaptain();
17 | System.out.println("New Captain selected for our team");
18 | }
19 | else
20 | {
21 | System.out.print("You already have a Captain for your team.");
22 | System.out.println("Send him for the toss.");
23 | }
24 | return _captain;
25 |
26 | }*/
27 | //Bill Pugh solution
28 | private static class SingletonHelper{
29 | private static final MakeACaptain _captain = new MakeACaptain();
30 | }
31 |
32 | public static MakeACaptain getCaptain()
33 | {
34 | return SingletonHelper._captain;
35 | }
36 |
37 |
38 | }
39 |
40 |
41 | class SingletonPatternEx
42 | {
43 | public static void main(String[] args)
44 | {
45 | System.out.println("***Singleton Pattern Demo***\n");
46 | System.out.println("Trying to make a captain for our team");
47 | MakeACaptain c1 = MakeACaptain.getCaptain();
48 | System.out.println("Trying to make another captain for our team");
49 | MakeACaptain c2 = MakeACaptain.getCaptain();
50 | if (c1 == c2)
51 | {
52 | System.out.println("c1 and c2 are same instance");
53 | }
54 |
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | StatePattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/state/pattern/demo/Off.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StatePattern/state/pattern/demo/Off.class
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/state/pattern/demo/On.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StatePattern/state/pattern/demo/On.class
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/state/pattern/demo/RemoteControl.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StatePattern/state/pattern/demo/RemoteControl.class
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/state/pattern/demo/StatePatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StatePattern/state/pattern/demo/StatePatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/state/pattern/demo/StatePatternEx.java:
--------------------------------------------------------------------------------
1 | package state.pattern.demo;
2 | abstract class RemoteControl
3 | {
4 | public abstract void pressSwitch(TV context);
5 | }
6 |
7 |
8 | class Off extends RemoteControl
9 | {
10 | @Override
11 | public void pressSwitch(TV context){
12 | System.out.println("I am Off .Going to be On now");
13 | context.setState(new On());
14 | }
15 | }
16 |
17 |
18 | class On extends RemoteControl
19 | {
20 | @Override
21 | public void pressSwitch(TV context)
22 | {
23 | System.out.println("I am already On .Going to be Off now");
24 | context.setState(new Off());
25 | }
26 | }
27 |
28 |
29 | class TV
30 | {
31 | private RemoteControl state;
32 |
33 | public RemoteControl getState() {
34 | return state;
35 | }
36 | public void setState(RemoteControl state) {
37 | this.state = state;
38 | }
39 | public TV(RemoteControl state)
40 | {
41 | this.state=state;
42 | }
43 | public void pressButton()
44 | {
45 | state.pressSwitch(this);
46 | }
47 | }
48 | class StatePatternEx
49 | {
50 | public static void main(String[] args)
51 | {
52 | System.out.println("***State Pattern Demo***\n");
53 | //Initially TV is Off
54 | Off initialState = new Off();
55 | TV tv = new TV(initialState);
56 | //First time press
57 | tv.pressButton();
58 | //Second time press
59 | tv.pressButton();
60 | }
61 | }
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/ApressCodes/StatePattern/state/pattern/demo/TV.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StatePattern/state/pattern/demo/TV.class
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | StrategyPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/choices/FirstChoice.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StrategyPattern/choices/FirstChoice.class
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/choices/FirstChoice.java:
--------------------------------------------------------------------------------
1 | package choices;
2 |
3 | public class FirstChoice implements IChoice
4 | {
5 | public void myChoice(String s1, String s2)
6 | {
7 | System.out.println("You wanted to add the numbers.");
8 | int int1, int2,sum;
9 | int1=Integer.parseInt(s1);
10 | int2=Integer.parseInt(s2);
11 | sum=int1+int2;
12 | System.out.println(" The result of the addition is:"+sum);
13 | System.out.println("***End of the strategy***");
14 | }
15 | }
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/choices/IChoice.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StrategyPattern/choices/IChoice.class
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/choices/IChoice.java:
--------------------------------------------------------------------------------
1 | package choices;
2 | public interface IChoice
3 | {
4 | void myChoice(String s1, String s2);
5 | }
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/choices/SecondChoice.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StrategyPattern/choices/SecondChoice.class
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/choices/SecondChoice.java:
--------------------------------------------------------------------------------
1 | package choices;
2 |
3 | public class SecondChoice implements IChoice
4 | {
5 | public void myChoice(String s1, String s2)
6 | {
7 | System.out.println("You wanted to concatenate the numbers.");
8 | System.out.println(" The result of the addition is:"+s1+s2);
9 | System.out.println("***End of the strategy***");
10 | }
11 | }
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/contextofchoice/Context.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StrategyPattern/contextofchoice/Context.class
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/contextofchoice/Context.java:
--------------------------------------------------------------------------------
1 | package contextofchoice;
2 |
3 | import choices.IChoice;
4 |
5 | public class Context
6 | {
7 | IChoice myC;
8 | // Set a Strategy or algorithm in the Context
9 | public void SetChoice(IChoice ic)
10 | {
11 | myC = ic;
12 | }
13 | public void ShowChoice(String s1,String s2)
14 | {
15 | myC.myChoice(s1,s2);
16 | }
17 | }
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/strategy/pattern/demo/StrategyPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/StrategyPattern/strategy/pattern/demo/StrategyPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/StrategyPattern/strategy/pattern/demo/StrategyPatternEx.java:
--------------------------------------------------------------------------------
1 | package strategy.pattern.demo;
2 | import java.io.IOException;
3 | //For Java old versions-to take input from user
4 | //import java.io.BufferedReader;
5 | //import java.io.InputStreamReader;
6 | /* Java 5 added a nice utility class called Scanner, to get input from user */
7 | import java.util.Scanner;
8 |
9 | import contextofchoice.Context;
10 | //import choices.*;
11 | import choices.FirstChoice;
12 | import choices.IChoice;
13 | import choices.SecondChoice;
14 |
15 |
16 | class StrategyPatternEx
17 | {
18 | public static void main(String[] args) throws IOException
19 | {
20 | System.out.println("***Strategy Pattern Demo***");
21 | Scanner in= new Scanner(System.in);//To take input from user
22 | IChoice ic = null;
23 | Context cxt = new Context();
24 | String input1,input2;;
25 | //Looping twice to test two different choices
26 | try
27 | {
28 | for (int i = 1; i <= 2; i++)
29 | {
30 | System.out.println("Enter an integer:");
31 | input1 = in.nextLine();
32 | System.out.println("Enter another integer:");
33 | input2 = in.nextLine();
34 | System.out.println("Enter ur choice(1 or 2)");
35 | System.out.println("Press 1 for Addition, 2 for Concatenation");
36 | String c = in.nextLine();
37 |
38 | /*For Java old versions-use these lines to collect input from user
39 | BufferedReader br = new BufferedReader( new InputStreamReader( System.in ));
40 | String c = br.readLine();*/
41 |
42 | if (c.equals("1"))
43 | {
44 | //If user input is 1, create object of FirstChoice (Strategy 1)
45 | ic = new FirstChoice();
46 | }
47 | else
48 | {
49 | //If user input is 2, create object of SecondChoice (Strategy 2)
50 | ic = new SecondChoice();
51 | }
52 | //Associate the Strategy with Context
53 | cxt.SetChoice(ic);
54 | cxt.ShowChoice(input1,input2);
55 | }
56 | }
57 | finally
58 | {
59 | in.close();
60 | }
61 | System.out.println("End of Strategy pattern");
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | TemplateMethodPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/engineering/papers/BasicEngineering.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/TemplateMethodPattern/engineering/papers/BasicEngineering.class
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/engineering/papers/BasicEngineering.java:
--------------------------------------------------------------------------------
1 | package engineering.papers;
2 |
3 |
4 | public abstract class BasicEngineering
5 | {
6 | public void Papers()
7 | {
8 | //Common Papers:
9 | Math();
10 | SoftSkills();
11 | //Specialized Paper:
12 | SpecialPaper();
13 | }
14 | private void Math()
15 | {
16 | System.out.println("Mathematics");
17 | }
18 | private void SoftSkills()
19 | {
20 | System.out.println("SoftSkills");
21 | }
22 | public abstract void SpecialPaper();
23 | }
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/engineering/papers/ComputerScience.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/TemplateMethodPattern/engineering/papers/ComputerScience.class
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/engineering/papers/ComputerScience.java:
--------------------------------------------------------------------------------
1 | package engineering.papers;
2 |
3 | public class ComputerScience extends BasicEngineering
4 | {
5 | @Override
6 | public void SpecialPaper()
7 | {
8 | System.out.println("Object Oriented Programming");
9 | }
10 | }
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/engineering/papers/Electronics.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/TemplateMethodPattern/engineering/papers/Electronics.class
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/engineering/papers/Electronics.java:
--------------------------------------------------------------------------------
1 | package engineering.papers;
2 |
3 | public class Electronics extends BasicEngineering
4 | {
5 | @Override
6 | public void SpecialPaper()
7 | {
8 | System.out.println("Digital Logic and Circuit Theory");
9 | }
10 | }
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/template/method/pattern/demo/TemplateMethodPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/TemplateMethodPattern/template/method/pattern/demo/TemplateMethodPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/TemplateMethodPattern/template/method/pattern/demo/TemplateMethodPatternEx.java:
--------------------------------------------------------------------------------
1 | package template.method.pattern.demo;
2 | import engineering.papers.*;
3 |
4 | class TemplateMethodPatternEx
5 | {
6 | public static void main(String[] args)
7 | {
8 | System.out.println("***Template Method Pattern Demo***\n");
9 |
10 | BasicEngineering bs = new ComputerScience();
11 | System.out.println("Computer Sc Papers:");
12 | bs.Papers();
13 | System.out.println();
14 | bs = new Electronics();
15 | System.out.println("Electronics Papers:");
16 | bs.Papers();
17 |
18 | }
19 | }
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | VisitorPattern
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/visitor/pattern/demo/IOriginalInterface.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/VisitorPattern/visitor/pattern/demo/IOriginalInterface.class
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/visitor/pattern/demo/IVisitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/VisitorPattern/visitor/pattern/demo/IVisitor.class
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/visitor/pattern/demo/MyClass.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/VisitorPattern/visitor/pattern/demo/MyClass.class
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/visitor/pattern/demo/Visitor.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/VisitorPattern/visitor/pattern/demo/Visitor.class
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/visitor/pattern/demo/VisitorPatternEx.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/ApressCodes/VisitorPattern/visitor/pattern/demo/VisitorPatternEx.class
--------------------------------------------------------------------------------
/ApressCodes/VisitorPattern/visitor/pattern/demo/VisitorPatternEx.java:
--------------------------------------------------------------------------------
1 | package visitor.pattern.demo;
2 |
3 | interface IOriginalInterface
4 | {
5 | void accept(IVisitor visitor);
6 | }
7 | class MyClass implements IOriginalInterface
8 | {
9 | //Initial or default value
10 | private int myInt = 5;
11 | public int getMyInt()
12 | {
13 | return myInt;
14 | }
15 |
16 | public void setMyInt(int myInt)
17 | {
18 | this.myInt = myInt;
19 | }
20 |
21 | @Override
22 | public void accept(IVisitor visitor)
23 | {
24 | System.out.println("Initial value of the integer :"+ myInt);
25 | visitor.visit(this);
26 | System.out.println("\nValue of the integer now :"+ myInt);
27 | }
28 | }
29 |
30 | interface IVisitor
31 | {
32 | void visit(MyClass myClassElement);
33 | }
34 | class Visitor implements IVisitor
35 | {
36 | @Override
37 | public void visit(MyClass myClassElement)
38 | {
39 | System.out.println("Visitor is trying to change the integer value");
40 | myClassElement.setMyInt(100);
41 | System.out.println("Exiting from Visitor- visit");
42 | }
43 | }
44 | class VisitorPatternEx
45 | {
46 | public static void main(String[] args)
47 | {
48 | System.out.println("***Visitor Pattern Demo***\n");
49 | IVisitor v = new Visitor();
50 | MyClass myClass = new MyClass();
51 | myClass.accept(v);
52 | }
53 | }
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/Errata.md:
--------------------------------------------------------------------------------
1 | # Errata for *Java Design Patterns : A Tour with 23 Gang of Four Design Patterns in Java*
2 | **General Information-1**
3 | An updated version of this book is appearing shortly.The enhanced version of the book has three parts. In the first part of Java Design Patterns , you will cover the 23 Gang of Four (GoF) design patterns, before moving onto some alternative design patterns, including the Simple Factory Pattern, the Null Object Pattern, and the MVC Pattern. The final part winds up with a conclusion and criticisms of design patterns with an overview of anti-patterns. By working through easy-to-follow examples, you will understand the concepts in depth and have a collection of programs to port over to your own projects.
4 | In each of these chapters, there is a “Q&A Session” that will act as a doubt clearing session with the pros and cons of each of these patterns. Author finishes the book with FAQs that will help you consolidate your knowledge. The step-by-step approach of the book helps you apply your skills to learn other patterns on your own, and to be familiar with the latest version of Java and Eclipse(Photon).
5 |
6 | **General Information-2 (about first edition)**
7 | **Preface**
8 | On **Page xxi** [Typo]:
9 | In point #2, "**I ** has made" should be **Author** has made**. In the initial pages of the book, similar type of typos occured.We are sorry for the inconvenience.So, in general, please replace all these "I"'s with the word **Author** for better readability and understanding.
10 |
11 | **Introduction**
12 | On **page 1** [Typo]:
13 | In 1994–95, four **Is—** should be In 1994–95, four **authors**
14 |
15 | **Chapter 2**
16 | On **page 11** [Typo]:
17 | In Note block, "**I** always suggests that" should be "I always **suggest** that"
18 |
19 | **Chapter 2**
20 | On **page 20** [Typo]:
21 | In Note block, "until the **}**getCaptain()**" should be "until the getCaptain()" i.e. remove the unwanted bracket "}".
22 |
23 | **Chapter 6**
24 | On **page 33** [Typo]:
25 | In Computer World Example, "first semester are common for all **concentrations**" should be "first semester are common for all **all engineering students**"
26 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Apress/java-design-patterns/e5b987b7048cee33774b214c30bb39641b2728d6/LICENSE.txt
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Apress Source Code
2 |
3 | This repository accompanies [*Java Design Patterns*](http://www.apress.com/9781484218013) by Vaskaran Sarcar (Apress, 2016).
4 |
5 | 
6 |
7 | Download the files as a zip using the green button, or clone the repository to your machine using Git.
8 |
9 | ## Releases
10 |
11 | Release v1.0 corresponds to the code in the published book, without corrections or updates.
12 |
13 | ## Contributions
14 |
15 | See the file Contributing.md for more information on how you can contribute to this repository.
16 |
--------------------------------------------------------------------------------
/contributing.md:
--------------------------------------------------------------------------------
1 | # Contributing to Apress Source Code
2 |
3 | Copyright for Apress source code belongs to the author(s). However, under fair use you are encouraged to fork and contribute minor corrections and updates for the benefit of the author(s) and other readers.
4 |
5 | ## How to Contribute
6 |
7 | 1. Make sure you have a GitHub account.
8 | 2. Fork the repository for the relevant book.
9 | 3. Create a new branch on which to make your change, e.g.
10 | `git checkout -b my_code_contribution`
11 | 4. Commit your change. Include a commit message describing the correction. Please note that if your commit message is not clear, the correction will not be accepted.
12 | 5. Submit a pull request.
13 |
14 | Thank you for your contribution!
--------------------------------------------------------------------------------