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);
            }
        }
  • 相关阅读:
    [Android学习笔记]Activity
    [Android学习笔记]Activity,View,Windows简介
    [Android]Eclipse的使用
    [Cocos2d-x]解决Android平台ndk-build时不自动删除外部库
    [Cocos2d-x]Android的android.mk文件通用版本
    [C++][STL]string记录
    nyoj-103-A+B Problem II
    nyoj-95-众数问题
    nyoj-187-快速查找素数
    nyoj-8-一种排序
  • 原文地址:https://www.cnblogs.com/laokchen/p/13544108.html
Copyright © 2011-2022 走看看