2.策略模式

来源:互联网 发布:mfc编程实例 2008 编辑:程序博客网 时间:2024/06/05 17:57
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();}}


原创粉丝点击