當(dāng)前位置:
首頁(yè) >
Java设计模式菜鸟系列(十三)建模和实现状态模式
發(fā)布時(shí)間:2025/6/15
42
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Java设计模式菜鸟系列(十三)建模和实现状态模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/lhy_ycu/article/details/39829859
狀態(tài)模式(State):同意對(duì)象在內(nèi)部狀態(tài)改變時(shí)改變它的行為,對(duì)象看起來(lái)好像改動(dòng)了它的類。狀態(tài)模式說(shuō)白了就是一個(gè)對(duì)象有不同的狀態(tài)。不同的狀態(tài)相應(yīng)不同的行為。它事實(shí)上是對(duì)switch case這種語(yǔ)句的拓展。
一、uml建模:
二、代碼實(shí)現(xiàn)
/*** 演示樣例:狀態(tài)模式-- 一個(gè)對(duì)像有不同的狀 態(tài),不同的狀態(tài)相應(yīng)不同的行為* * 以下四則運(yùn)算為例*/interface State {public double operate(double num1, double num2); }/*** 加法*/ class AddOperator implements State {@Overridepublic double operate(double num1, double num2) {return num1 + num2;} }/*** 減法*/ class SubOperator implements State {@Overridepublic double operate(double num1, double num2) {return num1 - num2;} }/*** 學(xué)生*/ class Student {private State state;public Student(State state) {this.state = state;}/*** 設(shè)置狀態(tài)*/public void setState(State state) {this.state = state;}public double operate(double num1, double num2) {return state.operate(num1, num2);}}/*** client測(cè)試類* * @author Leo*/ public class Test {public static void main(String[] args) {Student s1 = new Student(new AddOperator());System.out.println(s1.operate(12, 23));/*** 改變狀態(tài),即改變了行為 --> 加法運(yùn)算變成了減法運(yùn)算*/s1.setState(new SubOperator());System.out.println(s1.operate(12, 23));} }
三、總結(jié)
封裝基類狀態(tài)的行為,并將行為托付到當(dāng)前狀態(tài)。
版權(quán)聲明:本文博主原創(chuàng)文章,博客,未經(jīng)同意不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的Java设计模式菜鸟系列(十三)建模和实现状态模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DNS相关概念
- 下一篇: JavaXml教程(一)简介