为了实现一些特殊的显示效果,某公司欲开发一款手机数码照片处理软件,在该软件中为照片(Photograph)提供了多种滤镜(Filter)效果,例如黑白滤镜(BlackWhiteFilter)、单色滤镜(MonochromaticFilter)、怀旧滤镜(NostalgicFilter)等,不同的滤镜通过不同的算法对照片进行美化,如下图所示。
该软件可以灵活地增加一些新的滤镜效果。
选择一种合适的设计模式来设计该照片处理软件,结合场景绘制相应的类图并编程模拟实现。
类图:
实现代码:
照片类Photograph :(充当环境类) package StrategyPattern2;
public class Photograph {
private Filter filter;
public void setFilter(Filter filter) { this.filter = filter; } public void beautify(){
filter.beautify(); } }
滤镜类Filter :(充当抽象策略类) package StrategyPattern2;
public abstract class Filter { public abstract void beautify(); }
黑白滤镜类BlackWhiteFilter :(充当具体策略类) package StrategyPattern2;
public class BlackWhiteFilter extends Filter {
@Override public void beautify() { System.out.println("使用黑白滤镜美化图片"); } }
单色滤镜类MonochromaticFilter :(充当具体策略类) package StrategyPattern2;
public class MonochromaticFilter extends Filter {
@Override public void beautify() { System.out.println("使用单色滤镜美化图片"); } }
怀旧滤镜类NostalgicFilter :(充当具体策略类) package StrategyPattern2;
public class NostalgicFilter extends Filter {
@Override public void beautify() { System.out.println("使用怀旧滤镜美化图片"); } }
客户端类Client : package StrategyPattern2;
public class Client { public static void main(String[] args) {
Photograph photograph = new Photograph(); Filter filter; filter = new BlackWhiteFilter(); photograph.setFilter(filter); photograph.beautify();
} } |