很多人不喜欢拍马屁的人,觉得靠拍马屁上位的人很不要脸,你要知道这个世道,脸是最不值钱的东西。
他们一边抱怨领导不关注自己,一边又不屑于使用手段来获得关注。
这些人总想着用自己的能力战胜一切阴谋。
你没有只靠能力战胜阴谋的智商和能力,所以学的圆滑一点吧。
跟你的头学习,头发越来越少,脑瓜越来越滑。
当然了,圆滑也不一定是说成为那种只靠溜须拍马来获得权力的人,最起码我们要学会见人说人话,见鸟说鸟话。
话不多说展示才艺——我们 用一种设计模式来描述一下“见人说人话,见鸟说鸟话”
一、初识状态模式
允许一个对象在其内部状态改变时改变他们的行为。
状态模式属于一种行为模式。
状态模式主要解决的是当控制一个对象状态的条件过于复杂的情况,把状态的判断逻辑转义到表示不同状态的一系列类中,可以把复杂的判断逻辑简单化。
二、类图
环境包含状态,环境中状态修改后,状态的表现也就会修改。
Context:环境类 也叫上下文,它定义了客户端需要的接口,内部维护了一个状态,并负责具体状态的切换。
你以把它想象成你所处的真实职场环境。
2 State:抽象状态,定义一个接口,用来约束行为,比如你说话只能用嘴说,你用鼻子说话,那是瞧不起人
ConcreteState:具体的状态,实现抽象状态的行为,这个你可以想成,面对不同的人,有不同的说话语气。
三、示例
见人说人话,见鸟说鸟话
环境类:
package state;
/**
* @author 木子的昼夜编程
* 环境类
*/
public class Context {
State state;
// 初始化环境的时候 传入状态 这时候根据你自己的判断 看是需要说鸟话 还是人话
public Context(State s){
this.state = s;
}
// 可以动态设计状态 比如你刚看见一个喜欢拍马屁的领导 过了会儿又看见一个比较正直的领导
public void setState(State state) {
this.state = state;
}
public State getState() {
return state;
}
// 说话
public void say(){
state.say();
}
}
抽象状态类:
package state;
/**
* @author 木子的昼夜编程
* 抽象的状态类 约束行为 只能说话say 不能放屁
*/
public abstract class State {
// 抽象的说话方法
public abstract void say();
}
拍马屁领导状态类:
package state;
/**
* @author 木子的昼夜编程
* 遇到喜欢拍马屁的领导
*/
public class StateA extends State{
@Override
public void say() {
System.out.println("嘿!领导,早上好,您今天穿的可真帅。是不是公司要让你当CEO啦 ");
}
}
耿直领导状态类:
package state;
/**
* @author 木子的昼夜编程
* 遇到比较耿直的领导
*/
public class StateB extends State{
@Override
public void say() {
System.out.println("领导早!");
}
}
同事状态类:
package state;
/**
* @author 木子的昼夜编程
* 遇到普通同事
*/
public class StateC extends State{
@Override
public void say() {
System.out.println("早,XXX,早上吃的啥,那边有个豆腐脑不错你可以试试~");
}
}
开始说话:
package state;
/**
* @author 木子的昼夜编程
*/
public class Test {
public static void main(String[] args) {
// 创建环境 默认是遇见同事
Context context = new Context(new StateC());
context.say();
// 遇见喜欢被拍马屁领导
context.setState(new StateA());
context.say();
// 遇见耿直领导
context.setState(new StateB());
context.say();
}
}
四、聊聊
看似很简单,跟那个模板方法模式有点儿类似,就是设置不同的类,但是他们都有同一个父类,调用父类定义好的方法,子类的表现不一样。