Junior — Middle
Оё шумо метавонед консепти паттерни State ва истифодаи он дар барномасозии объектӣ-ба асоси шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
Модели Стейт иҷозат медиҳад, ки объект тағйироти рафторро дар асоси ҳолати дохилии худ, бо иваз кардани синфи ҳолат дар вақти иҷрои. Ин кӯмак мекунад, ки операторҳои шартии калонро пешгирӣ кунад ва коди бештар флексибл ва васеъшаванда созад.
Дар барномасозии объектӣ, барои татбиқи модел Стейт, интерфейси асосии ҳолат ва чанд синфи конкретии ҳолат сохта мешавад. Мавқеъ (объекти асосӣ) ишора ба ҳолати ҳозира нигоҳ медорад ва занҷирҳоро ба он месупорад.
Масалан дар Java:
interface State {
void handle(Context context);
}
class ConcreteStateA implements State {
public void handle(Context context) {
System.out.println("Ҳолати A дархостиро идора мекунад.");
context.setState(new ConcreteStateB());
}
}
class ConcreteStateB implements State {
public void handle(Context context) {
System.out.println("Ҳолати B дархостиро идора мекунад.");
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);
}
}
// Истифода:
Context context = new Context(new ConcreteStateA());
context.request(); // Ҳолати A дархостиро идора мекунад.
context.request(); // Ҳолати B дархостиро идора мекунад.
Ин гуна, рафтори объект динамикӣ тағйир меёбад дар вақти иваз кардани ҳолат.