装饰设计模式:它的出现基于流,并提升了流的功能
包装设计模式又称装饰模式,是指用一个类包装另一个类,增强功能
所谓包装,自定义一个包装类,针对某个被包装的对象进行功能的增强
关键点:
保证包装后对象的性质不发生改变,所以包装类需要和被包装对象实现同样的接口
包装类通常需要持有被包装对象(因为包装设计模式不能功能的重构,只是某个功能增强)
由于实现了同样的接口,包装类必须实现接口中所有的方法,对于大部分不想增强的方法,在实现接口时,我们利用被包装对象类实现
例如- public void run() {
- this.被包装对象.run();
- }
- 对于需要包装的方法,我们在被包装对象实现的基础之上增加功能
- public void go() {
- // ...... 增加功能
- this.被包装对象.go();
- // ...... 增强功能
- }
复制代码设计模式之策略模式 在程序的功能实现过程中,我们只规定算法名称,具体的算法留给将来的程序实现 在一个程序中提供的功能得以实现需要借助调用者的帮忙,并且是强制性的,此时可以在方法的参数中定义接口,让调用者来实现
例如:
- // 数字打印机
- public class NumberPrinter {
- // 持有数字
- private int[] arr;
- public NumberPrinter(int[] arr) {
- this.arr = arr;
- }
- public void print(NumberFilter filter) {
- for(int i=0; i<arr.length; i++) {
- int num = arr[i];
- if(filter.accept(num)) {
- System.out.print(num + ",");
- }
- }
- }
- }
- public interface NumberFilter {
- boolean accept(int num);
- }
复制代码
|