C#设计模式---State模式demo

using System;
using System.Collections.Generic;
using System.Text;
/*****************State设计模式**********************/
namespace SheJiMoShiDemo
{
    //定义一个接口,hint:接口必须是公共的(public)型的,
    //接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,
    //即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。
    //如果需要修饰符,最好让实现类来声明
    public interface State {
        void fire();
    }
    internal class NormalFire:State {
       public void fire() {
            Console.Write("Normal Fire now 111111111\n");
        }
    }
    internal class SupperFire:State {
       public void fire() {
            Console.Write("Supper Fire now 2222222222");
        }
    }
    internal class Man {
        public State _state = new NormalFire();


        public void  SetState(State state) {
            this._state = state;
        }


        public void fire() {
            _state.fire();
        }
    }




    class Program
    {
        static void Main(string[] args)
        {
            Man m = new Man();
            //调用正常开火
           // m.SetState(new NormalFire());
            m.fire();


            //调用超级开火
            m.SetState(new SupperFire());
            m.fire();


            //拖屏
            Console.Read();
            //总结:两种状态下的同一个fire()方法有不同的行为
            //使用状态模式的好处是每个状态被封装到一个独立的类中,
            //这些类可以独立变化,而主对象中没有繁琐的swich-case语句,并且添加新的状态非常容易,只需要从State派生一个新类即可
        }
    }


}

效果图:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值