File tree Expand file tree Collapse file tree 10 files changed +110
-0
lines changed
src/com/anxpp/designpattern/adapter Expand file tree Collapse file tree 10 files changed +110
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .adapter ;
2+ //被适配者
3+ class Adaptee {
4+ void playMp3 (Object src ){
5+ System .out .println ("播放MP3:" + src );
6+ }
7+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * @author Administrator
3+ */
4+ package com .anxpp .designpattern .adapter .List ;
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .adapter ;
2+ //目标,也就是用户所希望使用的
3+ interface Target {
4+ void playFlac (Object src );
5+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments