客户端(用户)使用:
public class TestUse { public static void main(String args[]){ AbstractObject obj = new ProxyObject(); obj.method1(); obj.method2(); obj.method3(); }}
控制台的输出就不放上来了,可以看到,代理模式实现确实比较简单,好处也显而易见,将目标对象与使用的用户隔离开,而且在调用目标对象的方法前后还能执行额外的操作(有点aop的概念)。
LinkedList可以实现栈、队列等数据结构,但我们还是希望一个专一的队列或数据结构,下面就以代理(部分代理)实现栈和队列:
//LinkedList的使用public class TestUse { public static void main(String[] args) { //栈 Stack<Integer> stack = new Stack<Integer>(); for(int i=0;i<10;i) stack.push(i); System.out.println(stack.peek()); System.out.println(stack.peek()); System.out.println(stack.pop()); System.out.println(stack.pop()); System.out.println(stack.pop()); Iterator<Integer> iterator = stack.iterator(); while(iterator.hasNext()) System.out.print(iterator.next()); System.out.println(); //队列 Queue<Integer> queue = new Queue<Integer>(); for(int i=0;i<10;i) queue.enqueue(i); System.out.println(queue.peek()); System.out.println(queue.peek()); System.out.println(queue.dequeue()); System.out.println(queue.dequeue()); System.out.println(queue.dequeue()); iterator = queue.iterator(); while(iterator.hasNext()) System.out.print(iterator.next()); }}//很使用使用代理模式利用LinkedList实现一个栈class Stack<T> implements Iterable<T>{ private LinkedList<T> stack = new LinkedList<T>(); public T pop(){//出栈,会删除栈顶元素 return stack.poll(); } public T peek(){//出栈,但不删除栈顶元素 return stack.peek(); } public void push(T t){//入栈 stack.push(t); } @Override public Iterator<T> iterator() { return stack.iterator(); }}//很使用使用代理模式利用LinkedList实现一个队列class Queue<T> implements Iterable<T>{ private LinkedList<T> queue = new LinkedList<T>(); public void enqueue(T t){ queue.offer(t); } public T dequeue(){ return queue.poll(); } public T peek(){ return queue.peek(); } @Override public Iterator<T> iterator() { return queue.iterator(); }}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33893-39.html
想想96年台海
最好看