CTGU三峡大学软件工程实验七:设计模式以及构件设计

Bridge

Bird

public abstract class Bird{
    //Fly
    protected FlyBehavior flyBehavior;

    //Swim
    protected SwimBehavior swimBehavior;

    public Bird(FlyBehavior flyBehavior,SwimBehavior swimBehavior){
        this.flyBehavior = flyBehavior;
        this.swimBehavior = swimBehavior;
    }

    public abstract void display();
}
Eagle
public class Eagle extends Bird {

    public Eagle(FlyBehavior flyBehavior, SwimBehavior swimBehavior){
        super(flyBehavior,swimBehavior);
    }

    @Override
    public void display() {
        System.out.println("我是老鹰");
        flyBehavior.Fly();
        swimBehavior.Swim();
    }
}
Penguin
public class Penguin extends Bird {

    public Penguin(FlyBehavior flyBehavior, SwimBehavior swimBehavior){
        super(flyBehavior,swimBehavior);
    }

    @Override
    public void display() {
        System.out.println("我是企鹅");
        flyBehavior.Fly();
        swimBehavior.Swim();
    }
}

FlyBehavior

public interface FlyBehavior {
    void Fly();
}
AbleFly
public class AbleFly implements FlyBehavior {

    @Override
    public void Fly() {
        System.out.println("展翅翱翔");
    }
}
UnableFly
public class UnableFly implements FlyBehavior {

    @Override
    public void Fly() {
        System.out.println("扑腾几下飞不起来");
    }
}

SwimBehavior

public interface SwimBehavior {
    void Swim();
}

AbleSwim
public class AbleSwim implements SwimBehavior {

    @Override
    public void Swim() {
        System.out.println("鱼翔浅底");
    }
}
UnableSwim
public class UnableSwim implements SwimBehavior {

    @Override
    public void Swim() {
        System.out.println("扑腾几下就淹死了");
    }
}

Client

public class Client {
    public static void main(String[] args) {
        //eagle
        Bird bird = new Eagle(new AbleFly(),new UnableSwim());
        bird.display();

        System.out.println("=================================");

        //penguin
        Bird bird1 = new Penguin(new UnableFly(),new AbleSwim());
        bird1.display();
    }
}

Strategy

DiscountStrategy

public interface DiscountStrategy {
    void getDiscount();
}
GoldCardUserDiscountStrategy
public class GoldCardUserDiscountStrategy implements DiscountStrategy {
    @Override
    public void getDiscount() {
        System.out.println("您是金卡用户,获得的折扣为: 八折");
    }
}

RegularUserDiscountStrategy
public class RegularUserDiscountStrategy implements DiscountStrategy {
    @Override
    public void getDiscount() {
        System.out.println("您是普通用户,没有折扣");
    }
}

SilverCardUserDiscountStrategy
public class SilverCardUserDiscountStrategy implements DiscountStrategy {
    @Override
    public void getDiscount() {
        System.out.println("您是银卡用户,获得的折扣为: 九折");
    }
}

Context

public class Context {
    private DiscountStrategy discountStrategy;

    public Context(DiscountStrategy discountStrategy) {
        this.discountStrategy = discountStrategy;
    }

    public void discount(){
        discountStrategy.getDiscount();
    }
}

Client

public class Client {
    public static void main(String[] args) {

        //RegularUser
        Context context = new Context(new RegularUserDiscountStrategy());
        context.discount();
        System.out.println("-----------------------------------------");

        //GoldCardUse
        context = new Context(new GoldCardUserDiscountStrategy());
        context.discount();

        System.out.println("-----------------------------------------");

        //SilverCardUser
        context = new Context(new SilverCardUserDiscountStrategy());
        context.discount();
    }
}

s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值