zoukankan      html  css  js  c++  java
  • 对象行为型模式

    介绍

    * 策略模式是指对一系列的算法定义,并将每一个算法封装成一个类,而且它们还可以相互替换
    

    优点

    * 简化单元测试,因为每个算法都是一个独立的类
    * 减少了算法类和使用算法类的耦合性
    * 提高了算法的重用性
    * 减少了条件语句
    

    缺点

    * 策略模式并没有解决客户端要选择创建那个依赖的压力,但是可以通过 策略模式+简单工厂模式 来减轻客户端的职责
    

    使用场景

    * 同一个目的,不同的实现
    * 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现
    * 对客户隐藏具体策略(算法)的实现细节,让其彼此完全独立。
    

    入门案例:

    UML图解:

    代码:

    TravelStrategy

    /**
     * 旅行策略接口(
     */
    public interface TravelStrategy {
        void goTrave();
    }
    
    

    Walk

    public class Walk implements TravelStrategy {
        
        @Override
        public void goTrave() {
            System.out.println("走路去旅行");
        }
    }
    
    

    Drive

    public class Drive implements TravelStrategy {
        
        @Override
        public void goTrave() {
            System.out.println("开车去旅行");
        }
    }
    
    

    Plane

    public class Plane implements TravelStrategy {
    
        @Override
        public void goTrave() {
            System.out.println("坐飞机旅行");
        }
    }
    

    Person

    public class Person {
    
        private TravelStrategy travelStrategy;
    
        public Person(TravelStrategy travelStrategy){
            this.travelStrategy = travelStrategy;
        }
    
        public void goTrave(){
            travelStrategy.goTrave();
        }
    }
    

    Main

    public class Main {
        public static void main(String[] args){
    //        Person person = new Person(new Walk());
            Person person = new Person(new Plane());
            person.goTrave();
        }
    }
    
  • 相关阅读:
    java——base64 加密和解密
    BASE64Encoded() 方法报错说方法未定义
    java 实现HTTP连接(HTTPClient)
    如何关闭一些烦人的弹窗(总结)
    IDEA
    6、git和github
    5、预测和鉴定miRNA的靶基因
    4、在线blast比对结果解析(保守结构域)
    ASE分析
    3、Linux下配置Java环境
  • 原文地址:https://www.cnblogs.com/tandi19960505/p/8148659.html
Copyright © 2011-2022 走看看