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;
}
}