背景
加深對@Observed@ObjectLink 裝飾器使用的理解,以小故事做注釋
效果

代碼片段
這是一個故事
Boss為了交付兩個完全一樣的客戶項目【只要寫1萬行代碼】,在公司內(nèi)部,把一個程序員配給了項目經(jīng)理,讓其監(jiān)督寫代碼
項目經(jīng)理領(lǐng)到指示后, 先告知客戶一,公司為其配了專職程序員,由其隨時發(fā)號施令讓其敲代碼,然后又以同樣的話術(shù)告知客戶二
接下來的事情,客戶一和客戶二,他們都非常滿意,因為每一天,雖然他們各自只督促程序員寫了一行代碼,但每天下班時,
客戶們都能看到兩行代碼,呵呵。Boss聽聞此事,甚是開心,遂告知項目經(jīng)理,也要在每天中督促一次程序員,果不其然,程序員竟然每天可以寫三行代碼了,
對此老板深思了一會......, 做了一個決定,將項目中的程序直接換掉, 僅留當(dāng)前的項目經(jīng)理.
later,客戶發(fā)現(xiàn)之前寫的代碼沒了,哭天罵娘神明英武的Boss一氣之下,為客戶們重新配了新的項目經(jīng)理和新的程序員

@Entry
@Component
struct Boss{
@State projectManager: ProjectManager = new ProjectManager(new Programmer(0, '小哥1'), '項管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告知項目經(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(() = > {
//換項目經(jīng)理,換程序員
this.projectManager = new ProjectManager(new Programmer(0, '小哥3'), '項管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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
代碼
+關(guān)注
關(guān)注
30文章
4970瀏覽量
74019 -
鴻蒙OS
+關(guān)注
關(guān)注
0文章
193瀏覽量
5499
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
鴻蒙OS開發(fā)實例:【頁面?zhèn)髦堤D(zhuǎn)】
本篇主要介紹如何在HarmonyOS中,在頁面跳轉(zhuǎn)之間如何傳值
HarmonyOS 的頁面指的是帶有@Entry裝飾器的文件,其不能獨自存在,必須依賴UIAbility這樣的組件容器
如下是官方關(guān)于State模型開發(fā)模式
Harmony 鴻蒙頁面級變量的狀態(tài)管理
+= 1
})
}
}
@Observed和ObjectLink數(shù)據(jù)管理
當(dāng)開發(fā)者需要在子組件中針對父組件的一個變量(parent_a)設(shè)置雙向同步時,開發(fā)者可以在父組件中使用@S
發(fā)表于 01-24 20:04
鴻蒙OS應(yīng)用程序開發(fā)
這份學(xué)習(xí)文檔主要是帶領(lǐng)大家在鴻蒙OS上學(xué)習(xí)開發(fā)一個應(yīng)用程序,主要知識點如下:1、U-Boot引導(dǎo)文件燒寫方式;2、內(nèi)核鏡像燒寫方式;3、鏡像運行。
發(fā)表于 09-11 14:39
【中秋國慶不斷更】OpenHarmony嵌套類對象屬性變化:@Observed裝飾器和@ObjectLink裝飾器
,使用new創(chuàng)建類對象。
@ObjectLink變量裝飾器
說明
裝飾器參數(shù)
無
同步類型
不與父組件中的任何類型同步變量。
允許
發(fā)表于 09-27 16:26
鴻蒙 OS 應(yīng)用開發(fā)初體驗
的 IDE、鴻蒙生態(tài)的開發(fā)語言 ArkTS,通過模擬器運行起來了鴻蒙 OS 版 HelloWorld。對于已經(jīng)有移動
發(fā)表于 11-02 19:38
嵌入式系統(tǒng)設(shè)計與實例開發(fā)—ARM與uC/OS-Ⅱ
嵌入式系統(tǒng)設(shè)計與實例開發(fā) ——ARM與uC/OS-Ⅱ
發(fā)表于 11-08 17:32
?0次下載
鴻蒙OS系統(tǒng)詳解
華為的鴻蒙OS是一款“面向未來”的操作系統(tǒng),是基于微內(nèi)核的全場景分布式OS,可按需擴展,實現(xiàn)更廣泛的系統(tǒng)安全。目前主要用于智能物聯(lián)網(wǎng),今年將擴展到智能手機上鴻蒙
鴻蒙OS 2.0手機開發(fā)者Beta版發(fā)布會在京舉辦
三個月前,鴻蒙OS 2.0正式在華為開發(fā)者大會2020亮相。12月16日,鴻蒙OS 2.0手機開發(fā)
華為發(fā)布鴻蒙OS Beta版
昨天華為發(fā)布鴻蒙OS Beta版了?鴻蒙系統(tǒng)一直在按照既有步伐前進(jìn),現(xiàn)在華為發(fā)布鴻蒙OS Beta版,而且一些生態(tài)
鴻蒙OS與Lite OS的區(qū)別是什么
鴻蒙OS鴻蒙OS面向未來、面向全場景、分布式。在單設(shè)備系統(tǒng)能力基礎(chǔ)上,鴻蒙OS提出了基于同一套系
鴻蒙os怎么升級
6月2日,華為正式發(fā)布了鴻蒙armonyOS 2系統(tǒng),那么鴻蒙os如何升級?現(xiàn)將鴻蒙os升級方式告知如下。
華為開發(fā)者大會2021鴻蒙os在哪場
華為開發(fā)者大會2021將在10月22日-24日舉辦,地點為東莞松山湖,鴻蒙os 3.0或?qū)⑴c我們見面,那么華為開發(fā)者大會2021鴻蒙
鴻蒙OS開發(fā)實例:【裝飾器-@BuilderParam】
這是一個基礎(chǔ)概念,其實沒有什么原因,練習(xí)過程中,自然可以感受到其用法,后期加上真實項目的演練,會形成習(xí)慣
鴻蒙OS開發(fā)教學(xué):【編程之重器-裝飾器】
1. @State
2. @Prop
3. @Link
4. @ObjectLink
5. @Watch
6. @Styles
7. @StorageProp
8.
鴻蒙OS開發(fā)實例:【ArkTS類庫多線程@Concurrent裝飾器校驗并發(fā)函數(shù)】
在使用TaskPool時,執(zhí)行的并發(fā)函數(shù)需要使用該裝飾器修飾,否則無法通過相關(guān)校驗。從API version 9開始,該裝飾器支持在ArkTS卡片中使用。
鴻蒙OS開發(fā)實例:【裝飾器@Observed@ObjectLink】
評論