Skip to content

Commit cf3c83a

Browse files
committed
适配器模式
1 parent 1ed31c8 commit cf3c83a

File tree

10 files changed

+110
-0
lines changed

10 files changed

+110
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.anxpp.designpattern.adapter;
2+
//被适配者
3+
class Adaptee{
4+
void playMp3(Object src){
5+
System.out.println("播放MP3:" + src);
6+
}
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.anxpp.designpattern.adapter;
2+
//类适配器
3+
public class ClassAdapter extends Adaptee implements Target {
4+
@Override
5+
public void playFlac(Object src) {
6+
//可能需要对src作处理
7+
playMp3(src);
8+
}
9+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.anxpp.designpattern.adapter.List;
2+
3+
import java.util.Enumeration;
4+
import java.util.Vector;
5+
//被适配者
6+
public class Book{
7+
private Vector<String> books;
8+
public Book(){
9+
books = new Vector<String>();
10+
}
11+
public void add(String book){
12+
books.add(book);
13+
}
14+
public Enumeration<String> getEnum(){
15+
return books.elements();
16+
}
17+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.anxpp.designpattern.adapter.List;
2+
3+
import java.util.Iterator;
4+
//适配器
5+
public class BookAdapter extends Book implements Iterable<String>{
6+
@Override
7+
public Iterator<String> iterator() {
8+
return new IteratorAdapter(getEnum());
9+
}
10+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.anxpp.designpattern.adapter.List;
2+
import java.util.Enumeration;
3+
import java.util.Iterator;
4+
//适配器,目标就是Iterator,被适配者是Enumeration
5+
public class IteratorAdapter implements Iterator<String> {
6+
Enumeration<String> myEnum;
7+
public IteratorAdapter(Enumeration<String> myEnum){
8+
this.myEnum = myEnum;
9+
}
10+
@Override
11+
public boolean hasNext() {
12+
return myEnum.hasMoreElements();
13+
}
14+
@Override
15+
public String next() {
16+
return myEnum.nextElement();
17+
}
18+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.anxpp.designpattern.adapter.List;
2+
3+
import java.util.Iterator;
4+
public class TestUse {
5+
public static void main(String args[]){
6+
BookAdapter books = new BookAdapter();
7+
books.add("think in java");
8+
books.add("c++ primer");
9+
books.add("伊索寓言");
10+
Iterator<String> iterator = books.iterator();
11+
while(iterator.hasNext()){
12+
System.out.println(iterator.next());
13+
}
14+
}
15+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/**
2+
* @author Administrator
3+
*/
4+
package com.anxpp.designpattern.adapter.List;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.anxpp.designpattern.adapter;
2+
//对象适配器
3+
public class ObjectAdapter implements Target{
4+
private Adaptee adaptee;
5+
public ObjectAdapter(){
6+
super();
7+
adaptee = new Adaptee();
8+
}
9+
@Override
10+
public void playFlac(Object src) {
11+
//可能需要对src作处理
12+
adaptee.playMp3(src);
13+
}
14+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.anxpp.designpattern.adapter;
2+
//目标,也就是用户所希望使用的
3+
interface Target{
4+
void playFlac(Object src);
5+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.anxpp.designpattern.adapter;
2+
public class TestUse {
3+
public static void main(String args[]){
4+
Adaptee adaptee = new Adaptee();
5+
adaptee.playMp3("mp3");
6+
Target target = new ClassAdapter();
7+
target.playFlac("flac");
8+
target = new ObjectAdapter();
9+
target.playFlac("flac");
10+
}
11+
}

0 commit comments

Comments
 (0)