策略模式和状态模式的区别

举报
小鲍侃java 发表于 2021/09/09 23:43:12 2021/09/09
【摘要】 策略模式和状态模式的类图相同,目的都是为了解耦,但是还有很多的区别 策略模式 public classs 我{ //打扮 void dressUp(); //娱乐 void entertainment(Grade grade){ grade.entertainment(); } //买车...

策略模式和状态模式的类图相同,目的都是为了解耦,但是还有很多的区别

策略模式


      public classs 我{
        //打扮
        void dressUp();
        //娱乐
        void entertainment(Grade grade){
            grade.entertainment();
         }
        //买车
        void buyCar();
      }
  
 

策略接口


      public interface Grade(
        public void hasMoney();
      )
  
 

策略实现


      public class has10 implements Grade{
           public void entertainment(){
                system.out.print("10块钱保健啥,洗个澡吧")
             }
      }
  
 

      public class has100 implements Grade{
           public void entertainment(){
                system.out.print("100块,按个脚吧")
             }
      }
  
 

      public class has1000 implements Grade{
           public void entertainment(){
                system.out.print("1000块,那就来个大保健吧")
             }
      }
  
 

调用


      public class Client {
        public static void main(String[] args) {
                我 me = new ();
               me.entertainment(new has10());
               me.entertainment(new has100());
             }
  
 

可以看到只有针对娱乐有不同方法,而其他的项目没有影响,此为策略模式

状态模式

我类的修改


      public classs 我{
        private Grade grade;
        public void setGrade(Grade grade) {
             this.grade= grade;
          }
        //打扮
        void dressUp(
       grade.dressUp();
       );
        //娱乐
        void entertainment(Healthcare healthcare){
            grade.dressUp();
         }
        //买车
        void buyCar(
       grade.buyCar();
       );
      }
  
 

调用


      public static void main(String[] args) {
                我 me = new ();
               me.setGrade(new has10());
               me.entertainment();
               me.dressUp();
               me.setGrade(new has100());
               me.entertainment();
             }
  
 

可以看到每一次的变化,我的整个档次都变了,无论是娱乐还是穿衣服,所以此为状态模式

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/102581277

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。