First, Directory
II. Overview and model
1. Overview
Meaning: Controls access to an object.
Function: The method of controlling an object in detail, pre-processing before invocation, and post-processing after invocation, thus enabling the processing of the uniform Process code in the proxy class.
Advantages:
Disadvantages:
2. Model
Component (abstract component): A public external method that defines a proxy role and a real role.
Concretecomponent (real component): Implements an abstract role that defines the real business logic to be implemented by the real role for invocation by the proxy role.
Decorator (abstract decorator): the implementation of abstract role, is the real role of the agent, through the real role of the business logic method to implement the abstract method, and can attach their own operations.
Concretedecorator (real decorator):
Ultimate goal: Put Unified Process Control into agent role processing.
Iii. description of the application scenario
1, security agent: Shielding the real role of direct access, by the role of the agent control, such as the real needs of the business when the proxy object calls the Real object method.
2. Remote Proxy: Handles remote method invocation (RMI) through the proxy class.
3, delay the agent: Load the Lightweight proxy object first, really need to load the real object again. For example, loading pictures, video, first by the proxy object in the background to open the Stream object, to really need to browse pictures, video, the real object to load the picture, and finally closed by the proxy object stream object.
4, Business: To solve the overview of the content, a layer of unchanging content is assumed by the proxy object, and the real business logic is implemented by the real object method.
5, the real system log processing, JDBC transaction, connection open and close.
Code Demo Scenario Description: If a star is invited to make an advertisement or film, then it is important to have these processes: interview----drafting contract, arranging tickets, tickets, and attendance at the end of payment. If you make one or two commercials a year, it's entirely up to a star to solve it. In fact, each star has a broker, while the star is only responsible for attending the event, and other matters are handled by the broker.
Four, Code demonstration
1. Abstract Components
Public Abstract class Component { publicabstract void display ();}
2. Real Components
Public class extends component{ publicvoid display () { System.out.println (" I'm a dirt wall! " ); }}
3. Abstract Decorator
Public classDecoratorextendscomponent{protectedComponent Component; PublicDecorator (Component Component) { This. Component =component; } PublicComponent getcomponent () {returncomponent; } Public voidsetcomponent (Component Component) { This. Component =component; } Public voiddisplay () {component.display (); }}
4. Real Decorator
Decorator A: Dirt wall
publicclassextends Decorator { public Concretedecoratora ( Component Component) { super(Component); } @Override publicvoid display () { this. Component.display (); System.out.println ("add cement on the dirt wall!") "); }}
Decorator B: Wall with wallpaper
publicclassextends Decorator { public Concretedecoratorb ( Component Component) { super(Component); } @Override publicvoid display () { this. Component.display (); System.out.println ("Add wallpaper on Peeling");} }
5, the Client
Public classClient { Public Static voidmain (String [] args) {//Create a new dirt Wall: Original Component ObjectComponent wall=Newconcretecomponent (); //decorator A: adding cement to the soil wallConcretedecoratora cementwall=NewConcretedecoratora (wall); Cementwall.display (); System.out.println ("-----------Split Line-------------"); //decoration B: Add wallpaper to the wall of the EarthConcretedecoratorb paperwall=NewConcretedecoratorb (wall); Paperwall.display (); System.out.println ("-----------Split Line-------------"); //Decorator B: Add wallpaper to the cement wall (decorator a)Concretedecoratorb mixedwall=NewConcretedecoratorb (Cementwall); Mixedwall.display (); }}
6. Test results
Decorator mode-Easy to remember IO class relationships and APIs