第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【學(xué)習(xí)打卡】第2天 Java設(shè)計(jì)模式精講-Debug方式+內(nèi)存分析 第十一講

【学习打卡】第2天 Java设计模式精讲-Debug方式+内存分析 第十一讲

课程名称:Java设计模式精讲-Debug方式+内存分析,真正学懂设计模式

课程章节: 装饰者模式讲解+Coding+源码解析

主讲老师:Geely

课程内容:

今天学习的内容包括:

什么是装饰者模式  装饰者模式 优点 缺点  Coding  源码解析 以及在业务上的应用

课程收获:

装饰者设计模式

1.定义

  在不改变原有对象的基础之上,将功能附加到对象上

1.1 特点

     提供了比继承更有弹性的替代方案(扩展原有对象功能)

1.2 类型  : 结构型

2.适用场景

   1、扩展一个类的功能或给一个类添加附加职责

   2、动态的给一个对象添加功能,这些功能可以再动态的撤销

3.缺点

  1.会出现更多的代码,更多的类,增加程序复杂性

  2.动态装饰时 多层装饰时会更复杂

4.优点

      1.继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能

      2.通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果

      3.符合开闭原则

5.装饰者-相关的设计模式

装饰者模式和代理模式

装饰者模式和适配器模式

外观模式和抽象工厂模式

编写代码

  1. 简单代码 

package com.zw.design.pattern.creational.structural.decorator.v2;
public abstract class ABattercake {
    protected String getDesc(){
        return null;
    }
    protected int cost(){
        return 0;
    }
}
package com.zw.design.pattern.creational.structural.decorator.v2;

public class Battercake extends ABattercake {
    protected String getDesc(){
        return "武大郎煎饼";
    }
    protected int cost(){
        return 9;
    }
}

2.编写装饰者聚合类

package com.zw.design.pattern.creational.structural.decorator.v2;

/****
 * 装饰者聚合类
 * 是否是抽象类 需要看具体业务
 */
public abstract class AbstractDecorator extends ABattercake {

    private ABattercake aBattercake;

    public AbstractDecorator(ABattercake aBattercake){
        this.aBattercake=aBattercake;
    }
    //如果是抽象方法 子类必须去重写改方法
    public abstract  void doSingle();


    @Override
    protected String getDesc() {
        return this.aBattercake.getDesc();
    }

    @Override
    protected int cost() {
        return this.aBattercake.cost();
    }
}

3.具体实现类

package com.zw.design.pattern.creational.structural.decorator.v2;

public class EggDecorator  extends AbstractDecorator{

    public EggDecorator(ABattercake aBattercake) {
        super(aBattercake);
    }

    @Override
    public void doSingle() {

    }

    @Override
    protected String getDesc() {
        return super.getDesc()+"加一个煎蛋";
    }

    @Override
    protected int cost() {
        return super.cost()+1;
    }
}
//第二个类
package com.zw.design.pattern.creational.structural.decorator.v2;

public class SausageDecorator extends AbstractDecorator{
    public SausageDecorator(ABattercake aBattercake) {
        super(aBattercake);
    }

    @Override
    public void doSingle() {

    }

    @Override
    protected String getDesc() {
        return super.getDesc()+" 加入一根火腿";
    }

    @Override
    protected int cost() {
        return super.cost()+3;
    }
}

4.测试

package com.zw.design.pattern.creational.structural.decorator.v2;

public class TestMain {
    public static void main(String[] args) {
      ABattercake aBattercake;
      aBattercake=new Battercake();
      //加鸡蛋
      aBattercake=new EggDecorator(aBattercake);
      //加火腿
      aBattercake=new SausageDecorator(aBattercake);
      aBattercake=new EggDecorator(aBattercake);

        System.out.println("aBattercake = " + aBattercake.getDesc()+" 价格 "+aBattercake.cost());

    }
}

ulm 设计图

https://img1.sycdn.imooc.com//62ebb8f60001f94016241174.jpg

测试结果

image-20220726223502852https://img1.sycdn.imooc.com//62ebb90800017d3713480130.jpg

框架源码解析

在spring框架当中TransactionAwareCacheDecorator  该类主要目的是提高缓存和事务之间的同步级别

https://img1.sycdn.imooc.com//62ebb9500001aca917061062.jpg

在mybatis 当中使用装饰者模式应用为FifoCache

https://img1.sycdn.imooc.com//62ebb965000140a117240990.jpg

今天学习课程共用了50分钟,重新学习一下设计模式 更加清楚知道装饰者模式的应用以及如何在自己项目当中去使用它  大家一起加油 💪🏻


點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消