策略模式:账户登录、手机验证码登录、微信登录、支付宝登录,微博登录。。。。
1、新建模块
2、原生代码:
- 抽象策略角色:抽象类 或者 接口 ILog
- 具体策略角色:FileLog ConsoleLog 实现抽象策略类的方法
- 环境角色:LogContext 持有 抽象策略类的引用
- 客户类:通过环境类调用策略方法
3、抽象策略角色 接口 ILog
package com.atguigu.design.demo.strategy;
public interface ILog {
void log(String msg);
}
4、具体策略角色 FileLog
package com.atguigu.design.demo.strategy;
public class FileLog implements ILog{
@Override
public void log(String msg) {
System.out.println("输出日志到文件。。。。");
}
}
5、具体策略角色 ConsoleLog
package com.atguigu.design.demo.strategy;
public class ConsoleLog implements ILog{
@Override
public void log(String msg) {
System.out.println("输出日志到控制台。。。" );
}
}
6、环境类 LogContext
package com.atguigu.design.demo.strategy;
public class LogContext {
private ILog log;
public void log(String msg) {
log.log(msg);
}
public ILog getLog() {
return log;
}
public void setLog(ILog log) {
this.log = log;
}
}
7、客户类 LogDemo
package com.atguigu.design.demo.strategy;
public class LogDemo {
public static void main(String[] args) {
LogContext context = new LogContext();
context.setLog(new ConsoleLog());
context.log("hello file");
}
}