Skip to content

Commit 091bb65

Browse files
committed
设计模式继续
1 parent cd4febd commit 091bb65

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1122
-562
lines changed

.idea/workspace.xml

Lines changed: 365 additions & 476 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/mashibing/dp/ASM/ClassPrinter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ public void visitEnd() {
3939

4040
public static void main(String[] args) throws IOException {
4141
ClassPrinter cp = new ClassPrinter();
42-
ClassReader cr = new ClassReader("java.lang.Runnable");
43-
// ClassReader cr = new ClassReader(
44-
// ClassPrinter.class.getClassLoader().getResourceAsStream("com/mashibing/dp/ASM/T1.class"));
42+
//ClassReader cr = new ClassReader("java.lang.Runnable");
43+
ClassReader cr = new ClassReader(
44+
ClassPrinter.class.getClassLoader().getResourceAsStream("com/mashibing/dp/ASM/T1.class"));
4545

4646

4747
cr.accept(cp, 0);

src/main/java/com/mashibing/dp/ASM/ClassTransformerTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public MethodVisitor visitMethod(int access, String name, String descriptor, Str
2222
return new MethodVisitor(ASM4, mv) {
2323
@Override
2424
public void visitCode() {
25-
visitMethodInsn(INVOKESTATIC, "TimeProxy","before", "()V", false);
25+
visitMethodInsn(INVOKESTATIC, "com/mashibing/dp/ASM/TimeProxy","before", "()V", false);
2626
super.visitCode();
2727
}
2828
};
@@ -32,6 +32,13 @@ public void visitCode() {
3232
cr.accept(cv, 0);
3333
byte[] b2 = cw.toByteArray();
3434

35+
MyClassLoader cl = new MyClassLoader();
36+
//Class c = cl.loadClass("com.mashibing.dp.ASM.Tank");
37+
cl.loadClass("com.mashibing.dp.ASM.TimeProxy");
38+
Class c2 = cl.defineClass("com.mashibing.dp.ASM.Tank", b2);
39+
c2.getConstructor().newInstance();
40+
41+
3542
String path = (String)System.getProperties().get("user.dir");
3643
File f = new File(path + "/com/mashibing/dp/ASM/");
3744
f.mkdirs();

src/main/java/com/mashibing/dp/ASM/MyClassLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ class MyClassLoader extends ClassLoader {
44
public Class defineClass(String name, byte[] b) {
55
return defineClass(name, b, 0, b.length);
66
}
7+
8+
79
}

src/main/java/com/mashibing/dp/ASM/TimeProxy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.mashibing.dp.ASM;
22

33
public class TimeProxy {
4+
45
public static void before() {
56
System.out.println("before ...");
67
}

src/main/java/com/mashibing/dp/Iterator/v5/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* v2:用链表来实现一个容器
88
* v3:添加容器的共同接口,实现容器的替换
99
* v4:如何对容器遍历呢?
10-
* v5:用一种统一的遍历方式,要求每一个容器都要提供Iterator的实现类
10+
* v4:用一种统一的遍历方式,要求每一个容器都要提供Iterator的实现类
1111
* 作业:实现LinkedList的Iterator
1212
*/
1313

src/main/java/com/mashibing/dp/Iterator/v6/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* v2:用链表来实现一个容器
1010
* v3:添加容器的共同接口,实现容器的替换
1111
* v4:如何对容器遍历呢?
12-
* v5:用一种统一的遍历方式,要求每一个容器都要提供Iterator的实现类
12+
* v4:用一种统一的遍历方式,要求每一个容器都要提供Iterator的实现类
1313
* 作业:实现LinkedList的Iterator
1414
* v6:JDK的容器的Iterator
1515
*/

src/main/java/com/mashibing/dp/Iterator/v7/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* v2:用链表来实现一个容器
66
* v3:添加容器的共同接口,实现容器的替换
77
* v4:如何对容器遍历呢?
8-
* v5:用一种统一的遍历方式,要求每一个容器都要提供Iterator的实现类
8+
* v4:用一种统一的遍历方式,要求每一个容器都要提供Iterator的实现类
99
* 作业:实现LinkedList的Iterator
1010
* v6:JDK的容器实现
1111
* v7:实现泛型版本
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.mashibing.dp;
2+
3+
import java.awt.*;
4+
import java.awt.event.WindowAdapter;
5+
import java.awt.event.WindowEvent;
6+
import java.awt.event.WindowListener;
7+
8+
public class Test {
9+
public static void main(String[] args) {
10+
Frame f = new Frame();
11+
f.addWindowListener(new WindowAdapter() {
12+
@Override
13+
public void windowClosing(WindowEvent e) {
14+
super.windowClosing(e);
15+
}
16+
});
17+
}
18+
}
19+
20+
//javap
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.mashibing.dp.adapter;
2+
3+
import java.io.BufferedReader;
4+
import java.io.FileInputStream;
5+
import java.io.InputStreamReader;
6+
7+
8+
public class Main {
9+
public static void main(String[] args) throws Exception {
10+
FileInputStream fis = new FileInputStream("c:/test.text");
11+
InputStreamReader isr = new InputStreamReader(fis);
12+
BufferedReader br = new BufferedReader(isr);
13+
String line = br.readLine();
14+
while (line != null && !line.equals("")) {
15+
System.out.println(line);
16+
}
17+
br.close();
18+
19+
20+
}
21+
}

0 commit comments

Comments
 (0)