0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開發(fā)實(shí)例:【裝飾器@Observed@ObjectLink】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-28 17:05 ? 次閱讀

背景

加深對(duì)@Observed@ObjectLink 裝飾器使用的理解,以小故事做注釋

效果

Screenshot_20231126110226119.png

代碼片段

這是一個(gè)故事

Boss為了交付兩個(gè)完全一樣的客戶項(xiàng)目【只要寫1萬行代碼】,在公司內(nèi)部,把一個(gè)程序員配給了項(xiàng)目經(jīng)理,讓其監(jiān)督寫代碼

項(xiàng)目經(jīng)理領(lǐng)到指示后, 先告知客戶一,公司為其配了專職程序員,由其隨時(shí)發(fā)號(hào)施令讓其敲代碼,然后又以同樣的話術(shù)告知客戶二

接下來的事情,客戶一和客戶二,他們都非常滿意,因?yàn)槊恳惶?,雖然他們各自只督促程序員寫了一行代碼,但每天下班時(shí),
客戶們都能看到兩行代碼,呵呵。

Boss聽聞此事,甚是開心,遂告知項(xiàng)目經(jīng)理,也要在每天中督促一次程序員,果不其然,程序員竟然每天可以寫三行代碼了,
對(duì)此老板深思了一會(huì)......, 做了一個(gè)決定,將項(xiàng)目中的程序直接換掉, 僅留當(dāng)前的項(xiàng)目經(jīng)理.
later,客戶發(fā)現(xiàn)之前寫的代碼沒了,哭天罵娘

神明英武的Boss一氣之下,為客戶們重新配了新的項(xiàng)目經(jīng)理和新的程序員

搜狗高速瀏覽器截圖20240326151547.png

@Entry
@Component
struct Boss{
  @State projectManager: ProjectManager = new ProjectManager(new Programmer(0, '小哥1'), '項(xiàng)管1');

  build(){
    Column({space: 50}){
      Customer({ label: '客戶一', programmer: this.projectManager.programmer })
      Customer({ label: '客戶二', programmer: this.projectManager.programmer })

      Button(`this.projectManager.programmer.codelines+= 1`)
        .onClick(() = > {
          //Boss告知項(xiàng)目經(jīng)理督促程序員寫代碼
          this.projectManager.programmer.codelines += 1;
        })

      Button(`this.projectManager.programmer = new Programmer(0)`)
        .onClick(() = > {
          //換程序員
          this.projectManager.programmer = new Programmer(0, '小哥2');
        })

      Button(`this.projectManager = new ProjectManager(Programmer(0))`)
        .onClick(() = > {
          //換項(xiàng)目經(jīng)理,換程序員
          this.projectManager = new ProjectManager(new Programmer(0, '小哥3'), '項(xiàng)管2');
        })

    }
    .width('100%')
    .height('100%')
    .padding({top: px2vp(111)})
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
    .backgroundColor(Color.Pink)
  }
}

@Observed
class Programmer {
  public name: string
  public codelines: number = 1;

  constructor(c: number, d: string) {
    this.codelines = c;
    this.name = d;
  }
}

class ProjectManager {
  public name: string
  public programmer: Programmer;

  constructor(a: Programmer, b: string) {
    this.programmer = a;
    this.name = b;
  }
}

@Component
struct Customer {
  label: string = 'customer';
  @ObjectLink programmer: Programmer;

  build() {
    Row() {
      Button(`[${this.label}] 讓 ${this.programmer.name} 寫代碼 = ${this.programmer.codelines}`)
        .onClick(() = > {
            this.programmer.codelines += 1;
        })
    }.backgroundColor(Color.Green).padding('16vp')
  }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68236
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4359
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙OS開發(fā)實(shí)例:【頁面?zhèn)髦堤D(zhuǎn)】

    本篇主要介紹如何在HarmonyOS中,在頁面跳轉(zhuǎn)之間如何傳值 HarmonyOS 的頁面指的是帶有@Entry裝飾的文件,其不能獨(dú)自存在,必須依賴UIAbility這樣的組件容器 如下是官方關(guān)于State模型開發(fā)模式
    的頭像 發(fā)表于 03-29 20:16 ?2126次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)例</b>:【頁面?zhèn)髦堤D(zhuǎn)】

    Harmony 鴻蒙頁面級(jí)變量的狀態(tài)管理

    += 1 }) } } @ObservedObjectLink數(shù)據(jù)管理 當(dāng)開發(fā)者需要在子組件中針對(duì)父組件的一個(gè)變量(parent_a)設(shè)置雙向同步時(shí),開發(fā)者可以在父組件中使用@S
    發(fā)表于 01-24 20:04

    鴻蒙OS應(yīng)用程序開發(fā)

    這份學(xué)習(xí)文檔主要是帶領(lǐng)大家在鴻蒙OS上學(xué)習(xí)開發(fā)一個(gè)應(yīng)用程序,主要知識(shí)點(diǎn)如下:1、U-Boot引導(dǎo)文件燒寫方式;2、內(nèi)核鏡像燒寫方式;3、鏡像運(yùn)行。
    發(fā)表于 09-11 14:39

    【中秋國慶不斷更】OpenHarmony嵌套類對(duì)象屬性變化:@Observed裝飾和@ObjectLink裝飾

    ,使用new創(chuàng)建類對(duì)象。 @ObjectLink變量裝飾 說明 裝飾參數(shù) 無 同步類型 不與父組件中的任何類型同步變量。 允許
    發(fā)表于 09-27 16:26

    鴻蒙 OS 應(yīng)用開發(fā)初體驗(yàn)

    的 IDE、鴻蒙生態(tài)的開發(fā)語言 ArkTS,通過模擬運(yùn)行起來了鴻蒙 OS 版 HelloWorld。對(duì)于已經(jīng)有移動(dòng)
    發(fā)表于 11-02 19:38

    嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)—ARM與uC/OS-Ⅱ

    嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā) ——ARM與uC/OS-Ⅱ
    發(fā)表于 11-08 17:32 ?0次下載

    鴻蒙OS系統(tǒng)詳解

    華為的鴻蒙OS是一款“面向未來”的操作系統(tǒng),是基于微內(nèi)核的全場(chǎng)景分布式OS,可按需擴(kuò)展,實(shí)現(xiàn)更廣泛的系統(tǒng)安全。目前主要用于智能物聯(lián)網(wǎng),今年將擴(kuò)展到智能手機(jī)上鴻蒙
    的頭像 發(fā)表于 11-12 11:24 ?1.3w次閱讀

    鴻蒙OS 2.0手機(jī)開發(fā)者Beta版發(fā)布會(huì)在京舉辦

    三個(gè)月前,鴻蒙OS 2.0正式在華為開發(fā)者大會(huì)2020亮相。12月16日,鴻蒙OS 2.0手機(jī)開發(fā)
    的頭像 發(fā)表于 12-16 09:29 ?1.9w次閱讀

    華為發(fā)布鴻蒙OS Beta版

    昨天華為發(fā)布鴻蒙OS Beta版了?鴻蒙系統(tǒng)一直在按照既有步伐前進(jìn),現(xiàn)在華為發(fā)布鴻蒙OS Beta版,而且一些生態(tài)
    的頭像 發(fā)表于 12-17 08:41 ?2840次閱讀

    鴻蒙OS與Lite OS的區(qū)別是什么

    鴻蒙OS鴻蒙OS面向未來、面向全場(chǎng)景、分布式。在單設(shè)備系統(tǒng)能力基礎(chǔ)上,鴻蒙OS提出了基于同一套系
    的頭像 發(fā)表于 12-24 12:40 ?4839次閱讀

    鴻蒙os怎么升級(jí)

    6月2日,華為正式發(fā)布了鴻蒙armonyOS 2系統(tǒng),那么鴻蒙os如何升級(jí)?現(xiàn)將鴻蒙os升級(jí)方式告知如下。
    的頭像 發(fā)表于 06-08 16:26 ?2695次閱讀

    華為開發(fā)者大會(huì)2021鴻蒙os在哪場(chǎng)

    華為開發(fā)者大會(huì)2021將在10月22日-24日舉辦,地點(diǎn)為東莞松山湖,鴻蒙os 3.0或?qū)⑴c我們見面,那么華為開發(fā)者大會(huì)2021鴻蒙
    的頭像 發(fā)表于 10-22 15:24 ?1861次閱讀

    鴻蒙OS開發(fā)實(shí)例:【裝飾-@BuilderParam】

    這是一個(gè)基礎(chǔ)概念,其實(shí)沒有什么原因,練習(xí)過程中,自然可以感受到其用法,后期加上真實(shí)項(xiàng)目的演練,會(huì)形成習(xí)慣
    的頭像 發(fā)表于 03-28 17:40 ?585次閱讀

    鴻蒙OS開發(fā)教學(xué):【編程之重-裝飾

    1. @State 2. @Prop 3. @Link 4. @ObjectLink 5. @Watch 6. @Styles 7. @StorageProp 8.
    的頭像 發(fā)表于 04-01 16:09 ?507次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>教學(xué):【編程之重<b class='flag-5'>器</b>-<b class='flag-5'>裝飾</b><b class='flag-5'>器</b>】

    鴻蒙OS開發(fā)實(shí)例:【ArkTS類庫多線程@Concurrent裝飾校驗(yàn)并發(fā)函數(shù)】

    在使用TaskPool時(shí),執(zhí)行的并發(fā)函數(shù)需要使用該裝飾修飾,否則無法通過相關(guān)校驗(yàn)。從API version 9開始,該裝飾支持在ArkTS卡片中使用。
    的頭像 發(fā)表于 04-02 14:45 ?565次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)例</b>:【ArkTS類庫多線程@Concurrent<b class='flag-5'>裝飾</b><b class='flag-5'>器</b>校驗(yàn)并發(fā)函數(shù)】