2.策略模式
16lz
2021-04-11
package strategPattern;/** * 一般实现方式(简单工厂模式) *@author LiMing E-mail:1151143484@qq.com *@date 2017年6月11日 上午9:05:39 */public class Commonly {public static void main(String[] args) {//创建方法是通过对象工厂创建 不用使用者知道应该new 那个方法 但是简单工厂模式不符合 开放封闭原则 它对于更改不是封闭的 需要修改工厂类Method method = Factory.createMethod("4");method.oprator();method = Factory.createMethod("5");method.oprator();method = Factory.createMethod("6");method.oprator();}}// 抽象方法类abstract class Method {public abstract void oprator();}// 方法4实体类class Method4 extends Method {public void oprator() {System.out.println("method4");}}// 方法5实体类class Method5 extends Method {public void oprator() {System.out.println("method5");}}// 方法6实体类class Method6 extends Method {public void oprator() {System.out.println("method6");}}// 工厂类class Factory {public static Method createMethod(String type) {Method method = null;switch (type) {case "4":method = new Method4();break;case "5":method = new Method5();break;case "6":method = new Method6();break;default:break;}return method;}}
package strategPattern;/** * 策略模式实现方式 说白了 策略模式就是把简单工厂模式中的那些类需要调用的方法再工厂中的一个方法中调用一下 就是工厂不进提供创建对象的功能 * 还提供帮助你调用对象方法的功能 具体看代码实现 * * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月11日 上午9:05:52 */public class StrategPattern {public static void main(String[] args) {//这里 调用方这只需要认识Context这个类就行 而简单工厂模式需要认识2个类 : Method + Factory 类Context context = null;context= new Context("7");context.oprator();context= new Context("8");context.oprator();context= new Context("9");context.oprator();}}// 抽象方法类abstract class MethodA {public abstract void oprator();}// 方法4实体类class Method7 extends MethodA {public void oprator() {System.out.println("method7");}}// 方法5实体类class Method8 extends MethodA {public void oprator() {System.out.println("method8");}}// 方法6实体类class Method9 extends MethodA {public void oprator() {System.out.println("method9");}}// 策略模式+工厂模式class Context {Method method = null;public Context(String type) {switch (type) {case "7":method = new Method4();break;case "8":method = new Method5();break;case "9":method = new Method6();break;default:break;}}// 工厂类帮助具体对象调用指定的方法public void oprator() {method.oprator();}}
策略模式就是把之前父类调用方法换成了在工厂类中调用 工厂类不仅仅提供类的创建 多了一个调用方法的功能
所以名字也不叫工厂类了 叫context
©著作权归作者所有:来自51CTO博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任
更多相关文章
- 5.依赖倒转原则
- 10.模板方法模式
- 15.抽象工厂模式
- 8.工厂方法
- 【收藏】最全JavaScript中所有的内置对象属性和方法汇总整理
- 微信小程序或公众号以及特殊表情,昵称等存入MySQL报错问题
- bootstrap-treeview 扩展addNode方法 动态添加子节点的方法
- DBeaver、Navicat、MySQL高频报错及解决方法
- JavaScript:留言板添加字数实时统计与禁止超出功能,部分字符串和