设计模式学习记录:一句话+代码体会设计模式。
九大常用设计模式
单例模式:https://blog.csdn.net/qq_37902949/article/details/87903569
简单工厂/静态工厂方法模式:https://blog.csdn.net/qq_37902949/article/details/87931684
工厂方法模式:https://blog.csdn.net/qq_37902949/article/details/87931610
代理模式:https://blog.csdn.net/qq_37902949/article/details/87931864
模板方法模式:https://blog.csdn.net/qq_37902949/article/details/87931912
观察者模式:https://blog.csdn.net/qq_37902949/article/details/87931995
适配器模式:https://blog.csdn.net/qq_37902949/article/details/87931940
装饰者模式:https://blog.csdn.net/qq_37902949/article/details/87931800
策略模式:https://blog.csdn.net/qq_37902949/article/details/87932047
策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换,该模式使得算法可独立于使用它的客户而变化。
一个支付方式例子体会策略模式。
策略接口
/**
* 支付接口
*/
public interface IPayStrategy {
void pay(); // 支付方法
}
具体策略
/**
* 具体策略
*/
public class AliPayStrategy implements IPayStrategy {
@Override
public void pay() {
System.out.println("使用支付宝支付");
}
}
/**
* 具体策略
*/
public class WechatStrategy implements IPayStrategy {
@Override
public void pay() {
System.out.println("使用微信支付");
}
}
/**
* 具体策略
*/
public class BankCardStrategy implements IPayStrategy {
@Override
public void pay() {
System.out.println("使用银行卡支付");
}
}
支付策略环境
/**
* 支付策略环境
*/
public class PayStrategyContext {
// 持有抽象策略引用
private IPayStrategy payStrategy;
// 配置应用策略
public void applyStrategy(IPayStrategy payStrategy) {
this.payStrategy = payStrategy;
}
// 定义一个执行支付的方法
public void executePay() {
if (payStrategy == null) {
throw new RuntimeException("支付方式为选择....");
}
payStrategy.pay();
}
}
测试
/**
* 策略模式测试
*/
public class TestStrategy {
public static void main(String[] args) {
// 创建支付策略环境
PayStrategyContext context = new PayStrategyContext();
// 微信支付
context.applyStrategy(new WechatStrategy());
context.executePay();
// 使用支付宝
context.applyStrategy(new AliPayStrategy());
context.executePay();
// 使用银行卡
context.applyStrategy(new BankCardStrategy());
context.executePay();
}
}
有些设计模式感觉很相似,其实还是有本质区别。。。
设计模式是软件开发人员在软件开发过程中面临一般问题的解决方案。
设计模式还是要慢慢体会。。