added course decorator example
This commit is contained in:
		
							
								
								
									
										5
									
								
								src/learn/simple_decorator/Component.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/learn/simple_decorator/Component.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package learn.simple_decorator; | ||||
|  | ||||
| public interface Component { | ||||
|     void operation(); | ||||
| } | ||||
							
								
								
									
										8
									
								
								src/learn/simple_decorator/ConcreteComponent.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/learn/simple_decorator/ConcreteComponent.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| package learn.simple_decorator; | ||||
|  | ||||
| public class ConcreteComponent implements Component { | ||||
|     @Override | ||||
|     public void operation() { | ||||
|         System.out.println("Concrete operation"); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										13
									
								
								src/learn/simple_decorator/ConcreteDecoratorA.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/learn/simple_decorator/ConcreteDecoratorA.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| package learn.simple_decorator; | ||||
|  | ||||
| public class ConcreteDecoratorA extends Decorator { | ||||
|     public ConcreteDecoratorA(Component component) { | ||||
|         super(component); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void operation() { | ||||
|         System.out.println("I am adding some new responsibilities here."); | ||||
|         super.operation(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										17
									
								
								src/learn/simple_decorator/ConcreteDecoratorB.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/learn/simple_decorator/ConcreteDecoratorB.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| package learn.simple_decorator; | ||||
|  | ||||
| public class ConcreteDecoratorB extends Decorator { | ||||
|     public ConcreteDecoratorB(Component component) { | ||||
|         super(component); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void operation() { | ||||
|         addedBehavior(); | ||||
|         super.operation(); | ||||
|     } | ||||
|  | ||||
|     private void addedBehavior() { | ||||
|         System.out.println("I am adding some new behavior here."); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										14
									
								
								src/learn/simple_decorator/Decorator.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/learn/simple_decorator/Decorator.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| package learn.simple_decorator; | ||||
|  | ||||
| public abstract class Decorator implements Component { | ||||
|     private Component component; | ||||
|  | ||||
|     public Decorator(Component component) { | ||||
|         this.component = component; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void operation() { | ||||
|         component.operation(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										11
									
								
								src/learn/simple_decorator/Main.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/learn/simple_decorator/Main.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| package learn.simple_decorator; | ||||
|  | ||||
| public class Main { | ||||
|     public static void main(String[] args) { | ||||
|         Component component = new ConcreteComponent(); | ||||
|         component = new ConcreteDecoratorB(component); | ||||
|         component = new ConcreteDecoratorA(component); | ||||
|  | ||||
|         component.operation(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user