大话设计模式——策略模式&委派模式

一、策略模式

策略模式的实现过程不同,但结果相同。可以理解成由起点导航到终点,虽然乘坐的交通工具不同,路程也各不一样,但是目的地是同一个。

二、示例代码

public interface Strategy {
    void commonStrategy();
}
public class StrategyA implements Strategy {
    @Override
    public void commonStrategy() {
        System.out.println("策略A实现");
    }
}
public class StrategyB implements Strategy {
    @Override
    public void commonStrategy() {
        System.out.println("策略B实现");
    }
}
public class StrategyManagement {
    private Strategy strategy;
    public StrategyManagement(Strategy strategy) {
        this.strategy = strategy;
    }
    public void strategy() {
        strategy.commonStrategy();
    }
}
public class RunMain {
    public static void main(String[] args) {
        StrategyManagement management = new StrategyManagement(new StrategyA());
        management.strategy();
    }
}

三、策略模式和委派模式的区别

策略模式只关注过程,而委派模式只关注结果。

委派模式中,委派者P被委派者BP实现了同一个接口的方法,其中委派者P在实现方法里调用被委派者BP的方法,被委派者BP去做去具体的实现。也就是干活给你,功劳给我。可以理解成内部的复用。

策略模式中,策略实现类S实现了策略接口的方法,策略管理类G不去实现策略接口的方法,只是通过传入不同策略实现类S的引用,去调用不同的实现方法。可以理解成外部扩展。

你可能感兴趣的:(设计模式)