模块化代理

This commit is contained in:
2018-04-01 19:45:31 +08:00
parent f4f1038da1
commit deb98e7b00
6 changed files with 143 additions and 41 deletions

5
.idea/vcs.xml generated
View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
</project>

121
.idea/workspace.xml generated
View File

@@ -1,7 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="87524ed3-9f15-48af-90a2-b58ffb27674c" name="Default" comment="" />
<list default="true" id="87524ed3-9f15-48af-90a2-b58ffb27674c" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarLogProxy.java" />
<change beforePath="" afterPath="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarTimeProxy.java" />
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/out/production/JavaBase/com/fjy/proxy/StaticProxy/Client.class" afterPath="$PROJECT_DIR$/out/production/JavaBase/com/fjy/proxy/StaticProxy/Client.class" />
<change beforePath="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Client.java" afterPath="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Client.java" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
@@ -12,21 +19,11 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Car.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Car.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="92">
<caret line="4" column="38" lean-forward="false" selection-start-line="4" selection-start-column="38" selection-end-line="4" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Client.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Client.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="8" column="8" lean-forward="false" selection-start-line="8" selection-start-column="8" selection-end-line="8" selection-end-column="8" />
<state relative-caret-position="184">
<caret line="8" column="24" lean-forward="true" selection-start-line="8" selection-start-column="24" selection-end-line="8" selection-end-column="24" />
<folding />
</state>
</provider>
@@ -35,8 +32,28 @@
<file leaf-file-name="CarAggregation.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarAggregation.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
<caret line="15" column="18" lean-forward="true" selection-start-line="15" selection-start-column="18" selection-end-line="15" selection-end-column="18" />
<state relative-caret-position="161">
<caret line="7" column="9" lean-forward="true" selection-start-line="7" selection-start-column="9" selection-end-line="7" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CarTimeProxy.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarTimeProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="138">
<caret line="6" column="10" lean-forward="false" selection-start-line="6" selection-start-column="10" selection-end-line="6" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CarLogProxy.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarLogProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="5" column="10" lean-forward="false" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="10" />
<folding />
</state>
</provider>
@@ -46,7 +63,7 @@
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarIntegration.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" column="49" lean-forward="true" selection-start-line="6" selection-start-column="8" selection-end-line="11" selection-end-column="49" />
<caret line="11" column="49" lean-forward="false" selection-start-line="6" selection-start-column="8" selection-end-line="11" selection-end-column="49" />
<folding />
</state>
</provider>
@@ -72,6 +89,9 @@
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GradleLocalSettings">
<option name="externalProjectsViewState">
<projects_view />
@@ -84,6 +104,8 @@
<option value="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarIntegration.java" />
<option value="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Car.java" />
<option value="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarAggregation.java" />
<option value="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarLogProxy.java" />
<option value="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarTimeProxy.java" />
<option value="$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Client.java" />
</list>
</option>
@@ -99,6 +121,9 @@
<option name="width" value="1009" />
<option name="height" value="1047" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
@@ -133,6 +158,13 @@
<item name="JavaBase" type="b2602c69:ProjectViewProjectNode" />
<item name="JavaBase" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="proxy" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="JavaBase" type="b2602c69:ProjectViewProjectNode" />
<item name="JavaBase" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="proxy" type="462c0819:PsiDirectoryNode" />
<item name="StaticProxy" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
@@ -146,6 +178,11 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
</component>
<component name="RecentsManager">
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="com.fjy.proxy.StaticProxy" />
</key>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
@@ -232,12 +269,12 @@
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1522581153869</updated>
<workItem from="1522581156473" duration="1358000" />
<workItem from="1522581156473" duration="1950000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="1358000" />
<option name="totallyTimeSpent" value="1950000" />
</component>
<component name="ToolWindowManager">
<frame x="-7" y="0" width="1009" height="1047" extended-state="0" />
@@ -251,8 +288,8 @@
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32896176" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32932165" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
@@ -283,14 +320,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/MoveAble.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="69">
<caret line="3" column="22" lean-forward="false" selection-start-line="3" selection-start-column="22" selection-end-line="3" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="92">
@@ -302,15 +331,23 @@
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarIntegration.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" column="49" lean-forward="true" selection-start-line="6" selection-start-column="8" selection-end-line="11" selection-end-column="49" />
<caret line="11" column="49" lean-forward="false" selection-start-line="6" selection-start-column="8" selection-end-line="11" selection-end-column="49" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/MoveAble.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="69">
<caret line="3" column="22" lean-forward="false" selection-start-line="3" selection-start-column="22" selection-end-line="3" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarAggregation.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
<caret line="15" column="18" lean-forward="true" selection-start-line="15" selection-start-column="18" selection-end-line="15" selection-end-column="18" />
<state relative-caret-position="161">
<caret line="7" column="9" lean-forward="true" selection-start-line="7" selection-start-column="9" selection-end-line="7" selection-end-column="9" />
<folding />
</state>
</provider>
@@ -318,15 +355,31 @@
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Car.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="92">
<caret line="4" column="38" lean-forward="false" selection-start-line="4" selection-start-column="38" selection-end-line="4" selection-end-column="38" />
<caret line="4" column="13" lean-forward="false" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarLogProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="5" column="10" lean-forward="false" selection-start-line="5" selection-start-column="4" selection-end-line="5" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/CarTimeProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="138">
<caret line="6" column="10" lean-forward="false" selection-start-line="6" selection-start-column="10" selection-end-line="6" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/com/fjy/proxy/StaticProxy/Client.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="115">
<caret line="8" column="8" lean-forward="false" selection-start-line="8" selection-start-column="8" selection-end-line="8" selection-end-column="8" />
<state relative-caret-position="184">
<caret line="8" column="24" lean-forward="true" selection-start-line="8" selection-start-column="24" selection-end-line="8" selection-end-column="24" />
<folding />
</state>
</provider>

View File

@@ -0,0 +1,17 @@
package com.fjy.proxy.StaticProxy;
public class CarLogProxy implements MoveAble{
private MoveAble moveAble;
public CarLogProxy(MoveAble moveAble) {
super();
this.moveAble=moveAble;
}
@Override
public void run() {
System.out.println("日志开始....");
moveAble.run();
System.out.println("日志结束....");
}
}

View File

@@ -0,0 +1,21 @@
package com.fjy.proxy.StaticProxy;
public class CarTimeProxy implements MoveAble{
private MoveAble moveAble;
public CarTimeProxy(MoveAble moveAble) {
super();
this.moveAble=moveAble;
}
@Override
public void run() {
long startTime = System.currentTimeMillis();
System.out.println("汽车开始行驶...");
moveAble.run();
long endTime = System.currentTimeMillis();
System.out.println("汽车结束行驶.... 汽车行驶时间:"
+ (endTime - startTime) + "毫秒!");
}
}

View File

@@ -7,26 +7,38 @@ public class Client {
*/
public static void main(String[] args) {
RunByCarProxy();
System.out.println("===========");
RunByCarAggregationProxy();
RunByModulProxy();
}
//直接运行
private static void RunByCar(){
System.out.println("不使用代理开车");
System.out.println("===========不使用代理开车===========");
Car car = new Car();
car.run();
}
//使用集成代理
private static void RunByCarProxy(){
System.out.println("使用集成代理开车");
System.out.println("===========使用集成代理开车===========");
CarIntegration carIntegration = new CarIntegration();
carIntegration.run();
}
//使用聚合代理
private static void RunByCarAggregationProxy(){
System.out.println("使用聚合代理开车");
System.out.println("===========使用聚合代理开车===========");
Car car = new Car();
MoveAble moveAble = new CarAggregation(car);
moveAble.run();
}
//模组化代理
private static void RunByModulProxy(){
System.out.println("===========使用模组化代理开车===========");
Car car = new Car();
CarLogProxy carLogProxy = new CarLogProxy(car);
CarTimeProxy carTimeProxy = new CarTimeProxy(carLogProxy);
carTimeProxy.run();
}
}