package stateMode;
/*
* 加班状态类 普通模式实现
*
*
* 这就是活生生的面向过程啊 那要java何用!! 让面向对象怎么看。。。
*/
public class Commonly {
public static void main(String[] args) {
hour = 9;
Work();
hour = 10;
Work();
hour = 12;
Work();
hour = 13;
Work();
hour = 14;
Work();
//完成工作
hour = 17;
isFinished = true;
Work();
hour = 19;
Work();
hour = 22;
Work();
//没完成工作
hour = 17;
isFinished = false;
Work();
hour = 19;
Work();
hour = 22;
Work();
}
//标记时间点
static int hour = 0;
//标记工作是否完成
static boolean isFinished = false;
/*
* 工作方法
*/
public static void Work(){
if(hour < 12){
System.out.println("当前时间"+hour+"点 上午工作,精神百倍");
}else if(hour < 13){
System.out.println("当前时间"+hour+"点 饿了 午饭 犯困 午休");
}else if(hour < 17){
System.out.println("当前时间"+hour+"点 下午状态还行");
}else {
if(isFinished){
System.out.println("当前时间"+hour+"点 下班回家");
}else{
if(hour < 21){
System.out.println("当前时间"+hour+"点 加班 加班 疲惫不堪");
}else{
System.out.println("当前时间"+hour+"点 不行了 要死了");
}
}
}
}
}
package stateMode;
/*
* 工作状态 这次最起码来一个面向对象啊 !!
*/
public class Commonly2 {
//时间
private int hour;
//是否完成工作
private boolean isFinished;
/*
* 方法太长 不是很么好事
*
* 违背了单一职责原则
*/
public void Work(){
if(hour < 12){
System.out.println("当前时间"+hour+"点 上午工作,精神百倍");
}else if(hour < 13){
System.out.println("当前时间"+hour+"点 饿了 午饭 犯困 午休");
}else if(hour < 17){
System.out.println("当前时间"+hour+"点 下午状态还行");
}else {
if(isFinished){
System.out.println("当前时间"+hour+"点 下班回家");
}else{
if(hour < 21){
System.out.println("当前时间"+hour+"点 加班 加班 疲惫不堪");
}else{
System.out.println("当前时间"+hour+"点 不行了 要死了");
}
}
}
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public boolean isFinished() {
return isFinished;
}
public void setFinished(boolean isFinished) {
this.isFinished = isFinished;
}
public static void main(String[] args) {
Commonly2 commonly2 = new Commonly2();
commonly2.setHour(9);
commonly2.Work();
commonly2.setHour(10);
commonly2.Work();
commonly2.setHour(12);
commonly2.Work();
commonly2.setHour(13);
commonly2.Work();
commonly2.setHour(14);
commonly2.Work();
//工作完成
commonly2.setFinished(true);
commonly2.setHour(17);
commonly2.Work();
commonly2.setHour(19);
commonly2.Work();
commonly2.setHour(22);
commonly2.Work();
//工作没完成
commonly2.setFinished(false);
commonly2.setHour(17);
commonly2.Work();
commonly2.setHour(19);
commonly2.Work();
commonly2.setHour(22);
commonly2.Work();
}
}
package stateMode;
/*
* 状态模式 :
* 当一个对象的内在状态改变时 允许改变其行为 这个对象看起来像是改变了其类
*
* 状态模式主要解决的是 当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类中 可以把复杂的判断逻辑简化
*
*/
public class StateMode {
public static void main(String[] args) {
Work work = new Work();
work.hour = 9;
work.Working();
work.hour = 10;
work.Working();
work.hour = 12;
work.Working();
work.hour = 13;
work.Working();
work.hour = 14;
work.Working();
//工作完成
/* work.hour = 17;
work.isFinished = true;
work.Working();
work.hour = 19;
work.Working();
work.hour = 22;
work.Working();*/
//工作未完成
work.hour = 17;
work.isFinished = false;
work.Working();
work.hour = 19;
work.Working();
work.hour = 22;
work.Working();
/*
* 这个时候 如果老板强制20点之前要下班的话 只需要在EveningState这个类中修改一下判断条件就行了
*/
}
}
/*
* 工作类
*/
class Work{
private State current;
/*
* 构造方法 初始化current 默认早上开始办公
*/
public Work(){
current = new morningState();
}
//工作时间
public int hour;
//工作状态
public boolean isFinished;
/*
* 设置当前状态
*/
public void SetState(State state){
current = state;
}
public void Working(){
current.Working(this);
}
}
/*
* 状态抽象类
*/
interface State{
public abstract void Working(Work work);
}
/*
* 上午状态
*/
class morningState implements State{
public void Working(Work work) {
if(work.hour < 12){
System.out.println("当前时间"+work.hour+"点 上午工作,精神百倍");
}else{System.out.println("ssssssssssssssss");
work.SetState(new NoonState());
work.Working();
}
}
}
/*
* 中午状态
*/
class NoonState implements State{
public void Working(Work work) {
if(work.hour < 13){
System.out.println("当前时间"+work.hour+"点 饿了 午饭 犯困 午休");
}else{
work.SetState(new AfternoonState());
work.Working();
}
}
}
/*
* 下午状态
*/
class AfternoonState implements State{
public void Working(Work work) {
if(work.hour < 17){
System.out.println("当前时间"+work.hour+"点 下午状态还行");
}else{
System.out.println("1111111111111111111111");
work.SetState(new EveningState());
work.Working();
}
}
}
/*
* 晚上状态
*/
class EveningState implements State{
public void Working(Work work) {
if(work.isFinished){
work.SetState(new RestState());
work.Working();
}else{
if(work.hour < 21){
System.out.println("当前时间"+work.hour+"点 加班 加班 疲惫不堪");
}else{
work.SetState(new SleepingState());
work.Working();
}
}
}
}
/*
* 下班啊 回家睡觉啊
*/
class RestState implements State{
public void Working(Work work) {
System.out.println("当前时间"+work.hour+"点 下班回家");
}
}
/*
* 不行了 要猝死了
*/
class SleepingState implements State{
public void Working(Work work) {
System.out.println("当前时间"+work.hour+"点 不行了 要死了");
}
}