您的位置:首页 > 其它

模板方法模式,策略模式

2017-03-16 23:19 267 查看
1策略模式:

实现一个程序,电影票打折,老人,小孩各有不同的折扣看电影。

public class Test1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
People p =new OldPeople("老人");
p.buyTickets();
p.getDiscount(new DiscontOf5());
}

}

interface Discount{
public void discountWay();
}

class DiscontOf7 implements Discount{
public void discountWay(){
System.out.println("电影票打七折");
}
}

class DiscontOf5 implements Discount{
public void discountWay(){
System.out.println("电影票打五折");
}
}

class DiscontOf8 implements Discount{
public void discountWay(){
System.out.println("电影票打八折");
}
}

abstract class People{
private String typePeople;
private Discount discount;

public People(String typePeople){
this.typePeople=typePeople;
}

public void getDiscount(Discount discount){
discount.discountWay();
}

public void buyTickets(){
System.out.println(typePeople+"买票看电影!");
}
}

class OldPeople extends People{
public OldPeople(String typePeople){
super(typePeople);
}
}2:模板方法模式
实现一个程序,去饭店吃饭,选择各种不同的套餐。

public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
PersonTreat personA=new PersonA("张三");
personA.treat();
personA.dishes();
personA.payment();
}

}

abstract class PersonTreat{
protected String name;

public void treat(){
System.out.println(name+"要请客吃饭");
}

public void dishes(){
switch (change()) {
case 1:
System.out.println("点的菜有:宫保鸡丁,红烧排骨。。。。。");
break;
case 2:
System.out.println("点的菜有:鱼香肉丝,铁板鱿鱼。。。。。");
break;
case 3:
System.out.println("点的菜有:碳烤活鱼,水煮鱼片。。。。。");
break;

default:
System.out.println("不知道怎么选择。");
break;
}

}

public void payment(){
System.out.println(name+"结账");
}

abstract int change();
}

class PersonA extends PersonTreat{
public PersonA(String name) {
this.name=name;
}

public int change(){
Random r =new Random();
int a =r.nextInt(3)+1;
return a;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐