java的状态模式
㈠ java设计模式之状态模式
状态模式是设计模式中的行为型模式,主要解决内在状态的改变引起行为改变的问题。以下是关于状态模式的详细解答:
核心角色:
- 抽象状态类:定义一个接口以封装与上下文的状态相关的行为。
- 具体状态:每一子类实现与上下文一个状态相关的行为。
- 上下文:维护一个具体状态实例,决定当前状态。
核心方法:
- 上下文抽象方法:用于处理请求,通常会委托给当前状态对象处理。
- 状态抽象方法:在抽象状态类中定义,由具体状态类实现,实现不同状态对应的行为。
特点:
- 状态是系统固有的:状态模式的重点在于状态是系统内部固有的,其改变不由外部控制。
- 环境角色职责复杂:环境角色不仅负责行为委托,还需登记状态变化,与具体状态协作完成状态切换。
- 封装状态变化:通过封装状态变化,对外暴露行为,有效地封装状态变化逻辑,减少内部算法的对外暴露。
应用场景:
- 广泛应用于各种状态变化频繁的场景,如审批工作流、订单状态管理等。
- 以审批流程为例,不同审批人对应不同状态,实现流程的灵活控制。
优缺点:
- 优点:封装转换规则,易于定义和管理状态。
- 缺点:引入额外类导致系统复杂度增加,且对新增状态支持不友好。
与策略模式的区别:
- 状态控制:状态模式强调状态是系统固有的,其改变不由外部控制;策略模式则依赖于外界给定的策略,系统只负责执行。
- 环境角色职责:状态模式中的环境角色职责更为复杂,不仅负责行为委托,还需登记状态变化;策略模式中的环境角色相对简单,主要负责执行策略。
- 解决问题侧重点:状态模式侧重于解决状态改变引起行为改变的问题;策略模式侧重于提供多种算法或行为,并根据需要选择执行。
通过以上解答,可以更加深入地理解状态模式的概念、特点、应用场景以及与策略模式的区别。
㈡ java中常用到得设计模式有哪几种(java常用的设计模式及应用场景)
一共23种设计模式!
按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。
创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。
创建型模式用来处档渗理对象的创建过程,主要包含以下5种设计模式:
工厂方法模式(FactoryMethodPattern)
抽象工厂模式(AbstractFactoryPattern)
建造者模式(BuilderPattern)
原型模式(PrototypePattern)
单例模式(SingletonPattern)
结构型模式用来处理类或者对象的组合,主要包含以下7种设计模式:
适配器模式(AdapterPattern)
桥接模式(BridgePattern)
组合模式(CompositePattern)
装饰者模式(DecoratorPattern)
外观模式(FacadePattern)
享元模式(FlyweightPattern)
代理模式(ProxyPattern)
行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:
责任链模式(行悉脊ChainofPattern)
命令模式(CommandPattern)
解释器模式(InterpreterPattern)
迭代器模式(IteratorPattern)
中介者模式(MediatorPattern)
备忘录模式(MementoPattern)
观察者模陆旁式(ObserverPattern)
状态模式(StatePattern)
策略模式(StrategyPattern)
模板方法模式(TemplateMethodPattern)
访问者模式(VisitorPattern)
推荐你一本好书:《软件秘笈:设计模式那点事》,里面讲解的23中设计模式例子很生动,容易理解,还有JDK中设计模式应用情况,看了收获挺大的!网络里面搜“设计模式”,第一条中设计模式网络中就有首推该图书,浏览量在20几万以上的,不会错的。好东西大家一起分享!
祝你早日学会设计模式!