• 软考------(抽象类、接口) 策略设计模式(strategy) 应用


    某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表5-1所示。

    #include <iostream>
    #include <string>
    using namespace std;
    
    class FlyBehavior
    {
    public: 
        virtual void fly31()=0;
    };
    class SubSonicFly:public FlyBehavior
    {
    public:
        void fly31()
        {cout<<"亚音速飞行"<<endl;}
    };
    class SuperSonicFly:public FlyBehavior
    {
    public:
        void fly31()
        {cout<<"超音速飞行"<<endl;}
    };
    
    class TakeOffBehavior
    {
    public:
        virtual void takeoff31()=0;
    };
    class VerticalTakeOff:public TakeOffBehavior
    {
    public:
        void takeoff31()
        {cout<<"垂直起飞"<<endl;}
    };
    class LongDistanceTakeOff:public TakeOffBehavior
    {
    public:
        void takeoff31()
        {cout<<"长距离起飞"<<endl;}
    };
    
    class AirCraft
    {
    protected:
        FlyBehavior *flyBehavior;
        TakeOffBehavior *takeOffBehavior;
    public:
        void fly31()
        {flyBehavior->fly31();}
        void takeoff31()
        {takeOffBehavior->takeoff31();}
    };
    class Helicopter:public AirCraft
    {
    public:
        Helicopter()
        {
            flyBehavior=new SubSonicFly();
            takeOffBehavior=new VerticalTakeOff();
        }
        ~Helicopter()
        {
            if(!flyBehavior)
                delete flyBehavior;
            if(!takeOffBehavior)
                delete takeOffBehavior;
        }
    };
    
    int main()
    {
        Helicopter *x=new Helicopter();
        x->fly31();
        x->takeoff31();
        return 0;
    }

    运行结果:

    java 代码实现:

    interface FlyBehavior
    {
    public void fly31();
    }
    class SubSonicFly implements FlyBehavior
    {
    public void fly31()
    {System.out.println("亚音速飞行");}
    }
    class SuperSonicFly implements FlyBehavior
    {
    public void fly31()
    {System.out.println("超音速飞行");}
    }
    
    interface TakeOffBehavior
    {
    public void takeoff31();
    }
    class VerticalTakeOff implements TakeOffBehavior
    {
    public void takeoff31()
    {System.out.println("垂直起飞");}
    }
    class LongDistanceTakeOff implements TakeOffBehavior
    {
    public void takeoff31()
    {System.out.println("长距离起飞");}
    }
    
    class AirCraft
    {
    protected FlyBehavior flyBehavior;
    protected TakeOffBehavior takeOffBehavior;
    public void fly31()
    {flyBehavior.fly31();}
    public void takeoff31()
    {takeOffBehavior.takeoff31();}
    }
    class Helicopter extends AirCraft
    {
        public Helicopter()
        {
            flyBehavior=new SubSonicFly();
            takeOffBehavior=new VerticalTakeOff();
        }
    }
    
    public class dev
    {
        public static void main(String [] args)
        {
            Helicopter x=new Helicopter();
            x.fly31();
            x.takeoff31();
        }
    }

  • 相关阅读:
    mysql数据库 --数据类型、约束条件
    并发编程 --线程
    并发编程 --进程
    MySQL数据库 --基础
    网络编程之 TCP-UDP的详细介绍
    网络编程之 OSI七层协议
    python 元类、单例模式
    python 面向对象_多态、内置方法、反射
    Python 面向对象_继承、组合
    简单工厂设计模式
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/6358141.html
Copyright © 2020-2023  润新知