1 public interface Resource {
2 void accept(Visitor visitor);
3 }
定義visitor,支持2種類型,reader類資源和writer資源,訪問writer資源需要額外一個(gè)line參數(shù):
1 public interface Visitor {
2 void visit(Reader reader);
3
4 void visit(Writer writer, String line);
5 }
1 public interface Reader {
2 String read();
3 }
1 public class ReaderImpl implements Reader, Resource {
2 @Override
3 public String read() {
4 return "Doc#1 factory riverwood staff manual.";
5 }
6
7 public void accept(Visitor visitor) {
8 visitor.visit(this);
9 }
10 }
1 public class WriterImpl implements Writer, Resource {
2
3 private String line;
4 public WriterImpl(String line) {
5 this.line = line;
6 }
7
8 @Override
9 public int write(String line) {
10 return null == line ? 0 : line.length();
11 }
12
13 @Override
14 public void accept(Visitor visitor) {
15 visitor.visit(this, line);
16 }
17 }
定義實(shí)際訪問Resource的兩個(gè)visitor角色:
1 public class VipVisitorImpl implements Visitor {
2
3 @Override
4 public void visit(Reader reader) {
5 String read = reader.read();
6 System.out.println(read);
7 }
8
9 @Override
10 public void visit(Writer writer, String line) {
11 int write = writer.write(line);
12 if (write > 0) {
13 System.out.println("write success!");
14 }
15 }
16 }
1 public class OrdinaryVisitorImpl implements Visitor {
2
3 @Override
4 public void visit(Reader reader) {
5 String read = reader.read();
6 System.out.println(read);
7 }
8
9 @Override
10 public void visit(Writer writer, String line) {
11 System.out.println("no access to writer!");
12 }
13
14 }
調(diào)用:
1 String line = "save this line";
2 Resource reader = new ReaderImpl();
3 Resource writer = new WriterImpl(line);
4
5 Visitor ordinaryVisitor = new OrdinaryVisitorImpl();
6 Visitor vipVisitor = new VipVisitorImpl();
7
8 reader.accept(vipVisitor);
9 reader.accept(ordinaryVisitor);
10
11 writer.accept(vipVisitor);
12 writer.accept(ordinaryVisitor);
執(zhí)行輸出:
Doc#1 factory riverwood staff manual.
Doc#1 factory riverwood staff manual.
write success!
no access to writer!
分享文章:visitor訪問者模式-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://chinadenli.net/article2/deedic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站收錄、虛擬主機(jī)、企業(yè)建站、軟件開發(fā)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容