zoukankan      html  css  js  c++  java
  • 【设计模式】17.状态者模式

    说明:这个比较简单,使用状态来改变行为,比如有3个行为类,根据条件判断后状态改为某个状态,从而执行这个行为类;

    实现:

    public class Account
        {
            public ABS_Status status1;
            public double Balance { get { return status1.balance; } }
    
            public void SaveMoney(double m)
            {
                status1.SaveMoney(m);
            }
    
            public void Withdraw(double m)
            {
                status1.Withdraw(m);
            }
        }
    
        public abstract class ABS_Status
        {
            public Account account1 { get; set; }
            public double balance { get; set; }
            public double LowerLimit { get; set; }
            public double UpperLimit { get; set; }
    
            public abstract void SaveMoney(double num);//存款
            public abstract void Withdraw(double num);//取款
        }
    
        public class RedStatus : ABS_Status
        {
            //红色状态表示透支,没钱了,不能取款
            public override void SaveMoney (double num)
            {
                balance += num;
                CheckStatus();
            }
    
            public override void Withdraw(double num)
            {
                //不能取款,所以不做操作
                return;
            }
    
            public void CheckStatus()
            {
                if(balance > UpperLimit) { 
                //有钱了,转绿色状态,可以取款
                }
            }
        }
    
        public class GreenStatus : ABS_Status
        {
            //绿色状态表示正常,能取款
            public override void SaveMoney(double num)
            {
                balance += num;
                CheckStatus();
            }
    
            public override void Withdraw(double num)
            {
                balance -= num;
                CheckStatus();
            }
    
            public void CheckStatus()
            {
                if (balance < UpperLimit)
                {
                    //无钱了,转红色状态,不可以取款
                }
            }
        }
    
        public class test
        {
            public void start()
            {
                Account aa = new Account();
                aa.SaveMoney(100);
                aa.Withdraw(900);
            }
        }
  • 相关阅读:
    63.Unique Paths II
    Java中的访问修饰符
    Java語言
    JRE与JDK
    Linux中ls命令详解
    硬盘主分区和拓展分区
    java中的静态初始化块
    java中的静态变量
    java中的静态方法
    java构造方法
  • 原文地址:https://www.cnblogs.com/laokchen/p/13544108.html
Copyright © 2011-2022 走看看