Bridge

Bird

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

1
2
3
4
5
6
7
8
9
10
11
12
13
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

1
2
3
public interface FlyBehavior {
void Fly();
}

AbleFly

1
2
3
4
5
6
7
public class AbleFly implements FlyBehavior {

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

UnableFly

1
2
3
4
5
6
7
public class UnableFly implements FlyBehavior {

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

SwimBehavior

1
2
3
4
public interface SwimBehavior {
void Swim();
}

AbleSwim

1
2
3
4
5
6
7
public class AbleSwim implements SwimBehavior {

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

UnableSwim

1
2
3
4
5
6
7
public class UnableSwim implements SwimBehavior {

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

Client

1
2
3
4
5
6
7
8
9
10
11
12
13
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

1
2
3
public interface DiscountStrategy {
void getDiscount();
}

GoldCardUserDiscountStrategy

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

RegularUserDiscountStrategy

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

SilverCardUserDiscountStrategy

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

Context

1
2
3
4
5
6
7
8
9
10
11
public class Context {
private DiscountStrategy discountStrategy;

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

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

Client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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