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

网站备案管理办法wordpress学生

网站备案管理办法,wordpress学生,广东省网页制作,ptp网站开发1. 设计模式原理说明 状态模式#xff08;State Pattern#xff09; 是一种行为设计模式#xff0c;它允许对象在其内部状态发生变化时改变其行为。这个模式的核心思想是使用不同的类来表示不同的状态#xff0c;每个状态类都封装了与该状态相关的特定行为。当对象的状态发…1. 设计模式原理说明 状态模式State Pattern 是一种行为设计模式它允许对象在其内部状态发生变化时改变其行为。这个模式的核心思想是使用不同的类来表示不同的状态每个状态类都封装了与该状态相关的特定行为。当对象的状态发生改变时对象会切换到另一个状态对象从而改变了它的行为。 主要角色 Context上下文定义客户感兴趣的接口维护一个对当前状态对象的引用。State抽象状态定义一个接口用以封装与Context的一个特定状态相关的行为。ConcreteState具体状态实现State接口每种状态都对应一个具体的状态类封装了与该状态相关的特定行为。 2. UML 类图及解释 UML 类图 ----------------- | Context | |-----------------| | - state: State | | setState(state: State) | | request() | -----------------^||v ----------------- | State | |-----------------| | handle(context: Context) | -----------------^||v ----------------- | ConcreteStateA | |-----------------| | handle(context: Context) | -----------------^||v ----------------- | ConcreteStateB | |-----------------| | handle(context: Context) | ----------------- 类图解释 Context定义客户感兴趣的接口维护一个对当前状态对象的引用。当状态变化时调用setState方法更新当前状态。State定义一个接口用以封装与Context的一个特定状态相关的行为。ConcreteStateA 和 ConcreteStateB实现State接口每种状态都对应一个具体的状态类封装了与该状态相关的特定行为。 3. 代码案例及逻辑详解 Java 代码案例 // 抽象状态 interface State {void handle(Context context); }// 具体状态 A class ConcreteStateA implements State {Overridepublic void handle(Context context) {System.out.println(Current state is ConcreteStateA);context.setState(new ConcreteStateB());} }// 具体状态 B class ConcreteStateB implements State {Overridepublic void handle(Context context) {System.out.println(Current state is ConcreteStateB);context.setState(new ConcreteStateA());} }// 上下文 class Context {private State state;public Context(State state) {this.state state;}public void setState(State state) {this.state state;}public void request() {state.handle(this);} }// 客户端 public class Client {public static void main(String[] args) {Context context new Context(new ConcreteStateA());context.request(); // 输出: Current state is ConcreteStateAcontext.request(); // 输出: Current state is ConcreteStateB} } C 代码案例 #include iostream// 抽象状态 class State { public:virtual void handle(Context* context) 0; };// 具体状态 A class ConcreteStateA : public State { public:void handle(Context* context) override {std::cout Current state is ConcreteStateA std::endl;context-setState(new ConcreteStateB());} };// 具体状态 B class ConcreteStateB : public State { public:void handle(Context* context) override {std::cout Current state is ConcreteStateB std::endl;context-setState(new ConcreteStateA());} };// 上下文 class Context { private:State* state; public:Context(State* state) : state(state) {}void setState(State* state) {delete this-state;this-state state;}void request() {state-handle(this);} };// 客户端 int main() {Context* context new Context(new ConcreteStateA());context-request(); // 输出: Current state is ConcreteStateAcontext-request(); // 输出: Current state is ConcreteStateBdelete context;return 0; } Python 代码案例 # 抽象状态 class State:def handle(self, context):pass# 具体状态 A class ConcreteStateA(State):def handle(self, context):print(Current state is ConcreteStateA)context.set_state(ConcreteStateB())# 具体状态 B class ConcreteStateB(State):def handle(self, context):print(Current state is ConcreteStateB)context.set_state(ConcreteStateA())# 上下文 class Context:def __init__(self, state):self.state statedef set_state(self, state):self.state statedef request(self):self.state.handle(self)# 客户端 if __name__ __main__:context Context(ConcreteStateA())context.request() # 输出: Current state is ConcreteStateAcontext.request() # 输出: Current state is ConcreteStateB Go 代码案例 package mainimport (fmt )// 抽象状态 type State interface {handle(context *Context) }// 具体状态 A type ConcreteStateA struct{}func (s *ConcreteStateA) handle(context *Context) {fmt.Println(Current state is ConcreteStateA)context.setState(ConcreteStateB{}) }// 具体状态 B type ConcreteStateB struct{}func (s *ConcreteStateB) handle(context *Context) {fmt.Println(Current state is ConcreteStateB)context.setState(ConcreteStateA{}) }// 上下文 type Context struct {state State }func (c *Context) setState(state State) {c.state state }func (c *Context) request() {c.state.handle(c) }// 客户端 func main() {context : Context{state: ConcreteStateA{}}context.request() // 输出: Current state is ConcreteStateAcontext.request() // 输出: Current state is ConcreteStateB } 4. 总结 状态模式 是一种行为设计模式它允许对象在其内部状态发生变化时改变其行为。这个模式的核心思想是使用不同的类来表示不同的状态每个状态类都封装了与该状态相关的特定行为。当对象的状态发生改变时对象会切换到另一个状态对象从而改变了它的行为。 主要优点 简化对象的操作将与特定状态相关的行为封装在状态对象中使上下文对象的操作更加简单。高内聚低耦合状态对象之间的转换逻辑被封装在状态对象内部减少了上下文对象的复杂性。易于扩展新增状态时只需添加新的状态类而不需要修改现有的代码。 主要缺点 类的膨胀每增加一个新的状态就需要增加一个新的类可能导致类的数量急剧增加。状态转换逻辑复杂状态之间的转换逻辑可能变得复杂尤其是当状态数量较多时。 适用场景 当一个对象的行为取决于它的状态并且它必须在运行时根据状态改变其行为时。当控制一个对象的状态转换的条件表达式过于复杂时。当代码中包含大量与对象状态有关的条件语句时可以考虑使用状态模式来简化这些条件语句。
http://www.tj-hxxt.cn/news/224592.html

相关文章:

  • 中国铁路建设集团公司网站wordpress取消自适应
  • 网站建制作建筑模板做凳子
  • 产品详情页面设计山西搜索引擎优化
  • 深圳华企网站建设落地页制作
  • 外贸网站建设制作滨海做网站的价格
  • 盘锦网站建设公司参考消息今天新闻
  • 深圳网站建设深正互联404源码网html
  • 铜仁网站建设哪家专业网站彩铃怎么做的
  • 平台优化沈阳seo搜索引擎
  • 站点的几种推广方式在局网站 作风建设方案
  • 惠州网站建设系统浏览器网站设置在哪里
  • 有哪些建站的公司在线crm系统价格
  • 湖南做网站的公司有哪些静态网站作品
  • 网站建设合同交什么印花税怎样说服企业做网站建设推广
  • 桓台新城建设有限公司网站wordpress农业站模板
  • 深圳乐安居网站谁做的舟山网站建设推荐
  • 如何整理网站选择网站建设公司
  • 教育类网站开发费用做网站的基本步骤
  • 一流的句容网站建设注册城乡规划师培训机构
  • 南京网站建设公司 雷快速做网站前端的视频教程
  • 自己做网赌网站重庆建筑公司排名
  • 上海建站宝盒广州专业网站改版设计公司
  • 南昌网站建设服务器巩义网站推广优化
  • 企业地址管理系统wordpress优化0sql
  • 网站建设pdf网站seo快速优化技巧
  • 合肥网站建设步骤微信小程序卖东西
  • 阿里云搭建网站多少钱郑州网站设计网站
  • seo网站优化做什么做网站怎么宣传
  • 网站制作做站长挣钱网站程序组成
  • 一个静态网站开发考虑什么娱乐新闻做的好的网站