栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式:19-状态模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式:19-状态模式

一、适用场景:对象的行为由其当前所属的状态决定的场景。比如微信支付,用户的取消支付这个行为,具体要做什么是由当前的支付状态决定的,当前的支付状态不同,取消支付这个行为会走不同的逻辑。
二、示例
1.定义一个支付状态抽象类:

package cn.edu.tju.app;

public abstract class PaymentState {
    public abstract  void continuePayment();
    public abstract void cancelPayment();
}

其中有两个方法,分别对应继续支付和取消支付。
2.定义3个支付状态的实现类

package cn.edu.tju.app;

public class OngoingPaymentState extends PaymentState {
    @Override
    public void continuePayment() {
        System.out.println("支付正在进行中,请不要重复发起");
    }

    @Override
    public void cancelPayment() {
        System.out.println("即将取消支付");
    }
}

package cn.edu.tju.app;

public class FinishedPaymentState extends PaymentState {
    @Override
    public void continuePayment() {
        System.out.println("您已支付完成,不需要支付");
    }

    @Override
    public void cancelPayment() {
        System.out.println("您已支付完成,无法取消");
    }
}

package cn.edu.tju.app;

public class CancelledPaymentState extends PaymentState {
    @Override
    public void continuePayment() {
        System.out.println("您选择了继续支付");
    }

    @Override
    public void cancelPayment() {
        System.out.println("支付已经取消,无法重复进行操作");
    }
}

这3个类分别代表不同的支付状态,在这3种状态下,继续支付所走的逻辑是不通的,同样地,在这3种状态下,取消支付所走的逻辑也是不同的。
3.定义主类进行测试:

package cn.edu.tju.app;

public class PaymentStateTest {
    public static void main(String[] args) {
        PaymentState paymentState1=new OngoingPaymentState();
        paymentState1.continuePayment();
        PaymentState paymentState2=new FinishedPaymentState();
        paymentState2.continuePayment();
        PaymentState paymentState3=new CancelledPaymentState();
        paymentState3.continuePayment();
    }
}

程序执行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号