设计模式-策略模式

为了实现一些特殊的显示效果,某公司欲开发一款手机数码照片处理软件,在该软件中为照片(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();

 

    }

}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值