设计模式漫谈之状态模式

最近感悟挺多,看了不少源码,发现不少东西本身都不懂,程序员这条路真是慢慢其修远兮啊,我爱写一些感悟。在公司上班最重要的就是工做态度,(就是职业道德,工匠精神),工做习惯(有一套本身的工做方式方法),工做经验(程序员绝对是长时间熬出来的),编程思想(把本身当成计算机才能理解计算机),业务逻辑(人的思惟)。程序员

两个对象空间能访问,必须能找到要访问对象的引用。编程

if else 条件是若是没合适的都判断,有就退出。框架

 

成员就近原则,对象中的方法能够访问对象的属性。ide

最近熬夜睡眠很差,这篇文章也写了好几天,最近公司不是太忙,我看了不少博客,感受js语言,这种解释性语言也挺厉害的。我目前的规划是精通C#语言,JS语言,一种编译语言,一种解释语言,而后框架。固然C语言,汇编,这些也是我要了解的。this

 

真要给本身一个目标,不然人生没有方向,生活没有动力。对象

单向通讯是一个对象A能访问对象B,可是在B对象中不能访问A对象,双向通讯就是互相均可以访问。生命周期

状态模式就是一直能够访问对象的状态。双向通讯。直接上例子:内存

//抽象的约束是对象A(state),在方法中能访问B(work).(这种理解是不恰当的,应该这样理解:对象B能够访问对象A的全部成员。对象A能够访问对象B所在的方法)get

public abstract class State
{
public abstract void WriteProgram(Work w);
}源码

//具体对象

public class ForenoonState : State
{
public override void WriteProgram(Work w)
{
if (w.Hour < 12)
{
Console.WriteLine("当前时间:{0}点 上午工做,精神百倍", w.Hour);
}
else
{
w.SetState(new NoonState());
w.WriteProgram();
}
}
}

//work对象能够访问state对象

public class Work
{
private State current;
public Work()
{
current = new ForenoonState();
}

private double hour;
public double Hour
{
get { return hour; }
set { hour = value; }
}

private bool finish = false;
public bool TaskFinished
{
get { return finish; }
set { finish = value; }
}


public void SetState(State s)
{
current = s;
}

public void WriteProgram()
{

//把当前的work对象保存传递
current.WriteProgram(this);
}
}

//对象的整个空间生命周期是继续使用

Work emergencyProjects = new Work();
emergencyProjects.Hour = 9;
emergencyProjects.WriteProgram();
emergencyProjects.Hour = 10;
emergencyProjects.WriteProgram();

 

总结,状态模式就是某个对象的空间生命周期继续使用。全部类型从个数上分,单个,多个,真正研究就是某个对象在内存中的生命周期。即对象从生到死,及交互对象的空间世界观。

这篇博客写的很差,由于有些东西真是只可意会说出来真的不太容易,不早了,晚安!

相关文章
相关标签/搜索