Java ——模板设计模式

设计模式:在编码过程中对通用的处理方式,方法进行抽取,精炼编程的方法

Java中常用的设计模式有23种。

开闭原则(OCP):类,模块,函数应该对修改关闭,对扩展开放,java的代码应遵循开闭原则

一个抽象类:定义模板方法,定义了一套执行逻辑顺序

几个抽象类的实现

如果煮饮品的过程是这样的:

public class TemplateDesignPattern{
    public static void main(String[] args){
    Coffer coffer = new Coffer();
    coffer.boilCoffer();//煮咖啡的过程
    Tea tea = new Tea();
    tea.boilTea();//煮茶的过程
    }
}

class Coffer{
    public void boilCoffer(){
    this.boilWater();
    this.waterInputCup();
    this.cofferInputWater();
    this.sugarInputCoffer();
}
    public void boilWater(){
        System.out.println("1、烧水");
    }
    public void waterInputCup(){
        System.out.println("2、水倒入杯子中");
    }
    public void cofferInputWater(){
        System.out.println("3、咖啡倒入水中");
    }
    public void sugarInputCoffer(){
        System.out.println("4、咖啡中加入糖");    
    }
}

class Tea{
    public void boilTea(){
        this.boilWater();
        this.waterInputCup();
        this.teaInputWater();
        this.lemonInputTea();
    }
    public void boilWater(){
        System.out.println("1、烧水");
    }
    public void waterInputCup(){
        System.out.println("2、水倒入杯子中");
    }
    public void teaInputWater(){
        System.out.println("3、茶倒入水中");
    }
    public void lemonInputTea(){
       System.out.println("4、茶中加入柠檬");
    }
}

 

那么有模板设计模式,那你煮饮品的过程会变为这个样子:


  不希望被子类覆写的方法用final修饰

public class TemplateDesignPattern{
    public static void main(String[] args){
    Coffer coffer = new Coffer();
    coffer.makeDrink();//煮咖啡的过程
    Tea tea = new Tea();
    tea.makeDrink();//煮茶的过程
    }
}

abstract class Drink{
//制作饮品------>这就是模板,定义了一套执行逻辑顺序(算法:解决问题的一系列流程)
    public final void makeDrink(){
    this.boilWater();
    this.waterInputCup();
    this.mainIngredient();
    this.minorIngredient();
}
    //不希望被子类覆写:final
    public final void boilWater(){
        System.out.println("1、烧水");
    }
    public final void waterInputCup(){
        System.out.println("2、水倒入杯子中");
    }
    //主料
    public abstract void mainIngredient();
    //辅料
    public abstract void minorIngredient();
    }

class Coffer extends Drink{
    public void mainIngredient(){
        System.out.println("3、咖啡倒入水中");
    }
    public void minorIngredient(){
        System.out.println("4、咖啡中加入糖");
    }
}

class Tea extends Drink{
    public void mainIngredient(){
        System.out.println("3、茶倒入水中");
    }
    public void minorIngredient(){
        System.out.println("4、茶中加入柠檬");
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值