适配器模式

来源:互联网 发布:河南省网络培训学院 编辑:程序博客网 时间:2024/06/05 05:35

1)来自java思想

已经存在一个生成Fibonacci数列的一个对象了,但是不可能总有这个对象的控制权,所以要增加这个对象的功能,则选择是适配器

工厂方法

package test;public interface Generator<T> {public T next();}
package test;public class Fibonacci implements Generator<Integer>{private int count = 0;private int fib(int n){if(n<2) return 1;return fib(n-2)+fib(n-1);}@Overridepublic Integer next() {return fib(count++);}//每一次next都会产生下一个数}
如果优化Fibonacci类,让其实现Iterable接口,会更加好,但是不可能总有Fibonacci的控制权,则用适配器模式

package test;import java.util.Iterator;public class IterableFibonacci extends Fibonacci implements Iterable<Integer>{//控制循环次数,终止条件private int n;public IterableFibonacci(int n){this.n = n;}@Overridepublic Iterator<Integer> iterator() {return new Iterator<Integer>(){@Overridepublic boolean hasNext() {return n>0;}@Overridepublic Integer next() {n--;return IterableFibonacci.this.next();}@Overridepublic void remove() {throw new UnsupportedOperationException();}};}public static void main(String[] args) {IterableFibonacci ci = new IterableFibonacci(10);for(Integer i : ci){System.out.println(i);}}}
其实是想实现foreach循环功能,也就是要实现Iterable接口,但是原来的类已经修改不了了,所以需要适配,这里选择继承的方式获取到Fibonacci的方法

0 0
原创粉丝点击