zoukankan      html  css  js  c++  java
  • 软件设计策略模式

    旅行方式的选择
    旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。

    类图

    Java

    package rjsj.no23;
    
    public class BicycleStrategy implements TravelStrategy{
        @Override
        public void travel() {
            System.out.println("骑自行车旅游");
        }
    }
    package rjsj.no23;
    
    public class Client {
        public static void main(String[] args) {
            Traveler traveler = new Traveler();
    
            System.out.println("旅游开始!");
            TravelStrategy travelStrategy = new TrainStrategy();
            traveler.setTravelStrategy(travelStrategy);
            traveler.travel();
            System.out.println("**************************************************");
            System.out.println("旅游开始!");
            travelStrategy = new AirplaneStrategy();
            traveler.setTravelStrategy(travelStrategy);
            traveler.travel();
            System.out.println("**************************************************");
            System.out.println("旅游开始!");
            travelStrategy = new BicycleStrategy();
            traveler.setTravelStrategy(travelStrategy);
            traveler.travel();
            System.out.println("**************************************************");
        }
    }
    package rjsj.no23;
    
    public class TrainStrategy implements TravelStrategy{
        @Override
        public void travel() {
            System.out.println("坐火车旅游");
        }
    }
    package rjsj.no23;
    
    public class Traveler {
        private TravelStrategy travelStrategy;
    
        public void setTravelStrategy(TravelStrategy travelStrategy) {
            this.travelStrategy = travelStrategy;
        }
    
        public void travel(){
            travelStrategy.travel();
        }
    }
    package rjsj.no23;
    
    public interface TravelStrategy {
        void travel();
    }
    package rjsj.no23;
    
    public class AirplaneStrategy implements TravelStrategy{
        @Override
        public void travel() {
            System.out.println("乘坐飞机旅游");
        }
    }

    C++

    #include<iostream>
    using namespace std;
    class TravelStrategy {
    public:
        virtual void travel()=0;
    };
    class Person {
    private:
        TravelStrategy *strategy;
    public:
        void setStrategy(TravelStrategy *strategy) {
            this->strategy=strategy;
        }
        void travel() {
            this->strategy->travel();
        }
    };
    class TrainStrategy : public TravelStrategy{
    public:
        void travel() {
            cout<<"坐火车"<<endl;
        }
    };
    class BicycleStrategy : public TravelStrategy{
    public:
        void travel() {
            cout<<"骑自行车"<<endl;
        }
    };
    class AirplaneStrategy: public TravelStrategy{
    public:
        void travel() {
            cout<<"坐飞机"<<endl;
        }
    };
    int main(){
            Person *pr=new Person();
    
            cout<<"旅游开始,请选择交通工具:"<<endl;
            TravelStrategy *strategy=new TrainStrategy();
            pr->setStrategy(strategy);
            pr->travel();
            cout<<"****************************************"<<endl;
    
            cout<<"旅游开始,请选择交通工具:"<<endl;
            TravelStrategy *strategy2=new BicycleStrategy();
            pr->setStrategy(strategy2);
            pr->travel();
            cout<<"****************************************"<<endl;
    
            cout<<"旅游开始,请选择交通工具:"<<endl;
            TravelStrategy *strategy3=new AirplaneStrategy();
            pr->setStrategy(strategy3);
            pr->travel();
    }

    运行结果:

  • 相关阅读:
    关于ACID,BASE和CAP定理的探究
    2020年10月3日——武汉,成都,南京房价揭秘
    程序员如何选择自己的保险
    Yarn系列(一)——Yarn整体介绍
    利用媒体查询实现响应式布局
    移动端web布局:适配
    scss在编辑器中保存自动编译css插件及安装
    移动端web布局:像素与成像的基本原理
    微信小程序:路由
    自定义vue指令
  • 原文地址:https://www.cnblogs.com/Arisf/p/15685742.html
Copyright © 2011-2022 走看看