当前位置: 首页 > news >正文

上海市城乡建设网站外贸生意怎么入手

上海市城乡建设网站,外贸生意怎么入手,龙岩网站制作设计,网络服务主要包括哪些什么是状态模式 状态模式是指允许一个对象在其内部状态改变时改变他的行为#xff0c;对象看起来似乎改变了整个类。     状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中#xff0c;通过设置不同的状态对象可以让环境对象拥有不同的行为#xff0c;而状…什么是状态模式 状态模式是指允许一个对象在其内部状态改变时改变他的行为对象看起来似乎改变了整个类。     状态模式将一个对象在不同状态下的不同行为封装在一个个状态类中通过设置不同的状态对象可以让环境对象拥有不同的行为而状态转换的行为对客户端是透明的。     状态模式主要包含以下几个角色         Context(环境)拥有多种状态的对象由于环境类的状态存在多样性且在不同状态下对象的行为有所不同因此将状态独立出来形成单独的状态类。         State(抽象状态类)定义一个接口以封装与环境类的一个特定相关行为在抽象状态类中声明了各种不同状态对应的方法而且在子类中都进行了实现。         ConcreteState(具体状态类)抽象状态类的子类每一个子类实现一个与环境类的一个状态相关的行为每一个具体状态类对应环境的一个具体状态。 状态模式的优缺点 优点 封装了状态的转换规则在状态模式中可以将状态的转换代码封装在环境类或者具体状态类中可以对状态转换代码集中管理。将所有与某个状态有关的行为放到一个类中只需要注入一个不同的状态对象即可使环境拥有不同的行为。允许状态转换逻辑和状态对象合成一体而不是提供一个巨大的条件语句块。可以让多个环境对象共享一个状态对象。 缺点 会增加系统中对象和类的个数导致系统运行开销大。状态模式的结构和实现较为复杂如果使用不当导致代码混乱。 状态模式的应用场景 对象的行为依赖于他的状态状态的改变将导致行为的改变。包含大量的与对象状态相关的条件语句。 状态模式的案例 // 抽象状态类 public abstract class State {/*** 扣除积分 - 50*/public abstract void deductMoney();/*** 是否抽中奖品** return boolean*/public abstract boolean raffle();/*** 发放奖品*/public abstract void dispensePrize();}// 具体状态类 public class NoRaffleState extends State {RaffleActivity activity;public NoRaffleState(RaffleActivity activity) {this.activity activity;}Overridepublic void deductMoney() {System.out.println(扣除50积分成功您可以抽奖了);activity.setState(activity.getCanRaffleState());}Overridepublic boolean raffle() {System.out.println(扣了积分才能抽奖喔);return false;}Overridepublic void dispensePrize() {System.out.println(不能发放奖品);}}public class CanRaffleState extends State {RaffleActivity activity;public CanRaffleState(RaffleActivity activity) {this.activity activity;}/*** 已经扣除了积分不能再扣*/Overridepublic void deductMoney() {System.out.println(已经扣取过了积分);}/*** 可以抽奖, 抽完奖后根据实际情况改成新的状态** return boolean*/Overridepublic boolean raffle() {System.out.println(正在抽奖请稍等);Random r new Random();int num r.nextInt(10);// 10%中奖机会if (num 0) {// 改变活动状态为发放奖品 contextactivity.setState(activity.getDispenseState());return true;} else {System.out.println(很遗憾没有抽中奖品);// 改变状态为不能抽奖activity.setState(activity.getNoRafflleState());return false;}}/*** 不能发放奖品*/Overridepublic void dispensePrize() {System.out.println(没中奖不能发放奖品);} }public class DispenseOutState extends State {RaffleActivity activity;public DispenseOutState(RaffleActivity activity) {this.activity activity;}Overridepublic void deductMoney() {System.out.println(奖品发送完了请下次再参加);}Overridepublic boolean raffle() {System.out.println(奖品发送完了请下次再参加);return false;}Overridepublic void dispensePrize() {System.out.println(奖品发送完了请下次再参加);}}public class DispenseState extends State {RaffleActivity activity;public DispenseState(RaffleActivity activity) {this.activity activity;}Overridepublic void deductMoney() {System.out.println(不能扣除积分);}Overridepublic boolean raffle() {System.out.println(不能抽奖);return false;}Overridepublic void dispensePrize() {if (activity.getCount() 0) {System.out.println(恭喜中奖了);// 改变状态为不能抽奖activity.setState(activity.getNoRafflleState());} else {System.out.println(很遗憾奖品发送完了);// 改变状态为奖品发送完毕, 后面我们就不可以抽奖activity.setState(activity.getDispensOutState());}} }// 环境类 public class RaffleActivity {State state;int count;State noRafflleState new NoRaffleState(this);State canRaffleState new CanRaffleState(this);State dispenseState new DispenseState(this);State dispensOutState new DispenseOutState(this);public RaffleActivity(int count) {this.state getNoRafflleState();this.count count;}public void debuctMoney() {state.deductMoney();}public void raffle() {// 如果当前的状态是抽奖成功if (state.raffle()) {//领取奖品state.dispensePrize();}}public State getState() {return state;}public void setState(State state) {this.state state;}public int getCount() {int curCount count;count--;return curCount;}public void setCount(int count) {this.count count;}public State getNoRafflleState() {return noRafflleState;}public void setNoRafflleState(State noRafflleState) {this.noRafflleState noRafflleState;}public State getCanRaffleState() {return canRaffleState;}public void setCanRaffleState(State canRaffleState) {this.canRaffleState canRaffleState;}public State getDispenseState() {return dispenseState;}public void setDispenseState(State dispenseState) {this.dispenseState dispenseState;}public State getDispensOutState() {return dispensOutState;}public void setDispensOutState(State dispensOutState) {this.dispensOutState dispensOutState;}}public static void main(String[] args) {// 创建活动对象奖品有1个奖品RaffleActivity activity new RaffleActivity(1);// 我们连续抽300次奖for (int i 0; i 30; i) {System.out.println(--------第 (i 1) 次抽奖----------);// 参加抽奖第一步点击扣除积分activity.debuctMoney();// 第二步抽奖activity.raffle();} }
http://www.hkea.cn/news/14515708/

相关文章:

  • 网站的分页效果怎么做网络工程设计报告
  • 做国际网站每年要多少钱建筑证书兼职网站
  • 深圳龙岗建网站雨伞设计公司logo
  • w3c网站代码标准规范余姚做网站的公司
  • 北京设计网站的公司台州建设局网站企业黑名单
  • 药品在哪些网站做推广外卖网站建设的策划
  • 优秀网站建设报价可信网站认证申请
  • 淘宝联盟推广网站怎么做西安装修一平米大概多少钱
  • 太仓网站开发wordpress 字数
  • 怎么做国外的网站建设网站最强
  • 绍兴网站推广佛山网页网站设计多少钱
  • 永济微网站建设费用网页制作 视频教程
  • 广元专业高端网站建设自己怎么做网站卖车
  • 四川省城乡住房建设部网站网站建设维护工作经验
  • 网站开发的基本流程和步骤大连网站制作431
  • 东莞附近公司做网站建设多少钱网站html有趣代码
  • 网站开发只要网页版微信登录入口手机
  • 泰安住房和城乡建设厅网站家具网站设计方案
  • 十堰建设局网站WordPress数据API
  • 公司网站建设申请书单页网站规划设计书
  • 申请域名网站价格电子科技公司网站建设方案
  • 建设银行网上流览网站手机端网站建设公司
  • 可以做旅游攻略的网站it行业干什么
  • 用asp做网站流程品牌网站建设渠道
  • 网站是什么东西wordpress国内现状
  • 做网站常用图标wordpress 文章投票插件
  • 营销型网站建设实训总结手机网站免费建设
  • 网站设计计费工厂生产管理系统
  • 建设飞鹰摩托车官方网站网站开发是什么经营范围
  • 吕梁网站制作响应式网站案列