日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 架構(gòu)師社區(qū)
[導(dǎo)讀]??我將常用的軟件設(shè)計(jì)模式,做了匯總,目錄如下:(考慮到內(nèi)容篇幅較大,為了便于大家閱讀,將軟件設(shè)計(jì)模式系列(共23個(gè))拆分成四篇文章,每篇文章講解六個(gè)設(shè)計(jì)模式,采用不同的顏色區(qū)分,便于快速消化記憶)本文,主要講解模板模式、策略模式、狀態(tài)模式、觀察者模式、訪(fǎng)問(wèn)者模式、備忘錄模式1、...

??我將常用的軟件設(shè)計(jì)模式,做了匯總,目錄如下:

看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

(考慮到內(nèi)容篇幅較大,為了便于大家閱讀,將軟件設(shè)計(jì)模式系列(共23個(gè))拆分成四篇文章,每篇文章講解六個(gè)設(shè)計(jì)模式,采用不同的顏色區(qū)分,便于快速消化記憶)


本文,主要講解模板模式、策略模式、狀態(tài)模式觀察者模式、訪(fǎng)問(wèn)者模式、備忘錄模式

1、模板模式

定義:

定義一個(gè)操作中的算法的骨架,將一些步驟延遲到子類(lèi)中。模板模式使得子類(lèi)可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。

優(yōu)點(diǎn):1、封裝不變部分,擴(kuò)展可變部分。2、提取公共代碼,便于維護(hù)。3、行為由父類(lèi)控制,子類(lèi)實(shí)現(xiàn)。缺點(diǎn):每一個(gè)不同的實(shí)現(xiàn)都需要一個(gè)子類(lèi)來(lái)實(shí)現(xiàn),導(dǎo)致類(lèi)的個(gè)數(shù)增加,維護(hù)成本高。

核心思路:

  • AbstractTemplate:定義一個(gè)完整的框架,方法的調(diào)用順序已經(jīng)確定,但會(huì)定義一些抽象的方法留給子類(lèi)去實(shí)現(xiàn)
  • AHandler:具體的業(yè)務(wù)子類(lèi),實(shí)現(xiàn)AbstractTemplate中定義的抽象方法,從而形成一個(gè)完整的流程邏輯
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

代碼示例:

public?TradeFlowActionResult?execute(TradeFlowActionParam?param,?Map?context)?throws?ServiceException?{
????try?{????//?業(yè)務(wù)邏輯校驗(yàn)
????????this.validateBusinessLogic(param,?context);
????}?catch?(ServiceException?ex)?{
????????sendGoodsLog.info("SendGoodsAction->validateBusinessLogic?got?exception.?param?is?"? ?param,?ex);
????????throw?ex;
????}?catch?(RuntimeException?ex)?{
????????sendGoodsLog.info("SendGoodsAction->validateBusinessLogic?got?runtime?exception.?param?is?"? ?param,?ex);
????????throw?ex;
????}
????try?{
????????//?賣(mài)家發(fā)貨業(yè)務(wù)邏輯
????????this.sendGoods(param,?context);
????}?catch?(ServiceException?ex)?{
????????sendGoodsLog.info("SendGoodsAction->sendGoods?got?exception.?param?is?"? ?param,?ex);
????????throw?ex;
????}?catch?(RuntimeException?ex)?{
????????sendGoodsLog.info("SendGoodsAction->sendGoods?got?runtime?exception.?param?is?"? ?param,?ex);
????????throw?ex;
????}
????try?{
????????//?補(bǔ)充業(yè)務(wù)(結(jié)果不影響核心業(yè)務(wù))
????????this.addition(param,?context);
????}?catch?(ServiceException?ex)?{
????????sendGoodsLog.info("SendGoodsAction->addition?got?exception.?param?is?"? ?param,?ex);
????????throw?ex;
????}?catch?(RuntimeException?ex)?{
????????sendGoodsLog.info("SendGoodsAction->addition?got?runtime?exception.?param?is?"? ?param,?ex);
????????throw?ex;
????}
????//?處理結(jié)果
????return?null;
}
上面提到的三個(gè)抽象方法(業(yè)務(wù)邏輯校驗(yàn)、賣(mài)家發(fā)貨業(yè)務(wù)邏輯、補(bǔ)充業(yè)務(wù))都是在子類(lèi)中實(shí)現(xiàn)的。即控制了主流程結(jié)構(gòu),又不失靈活性,可以讓使用者在其基礎(chǔ)上定制開(kāi)發(fā)。如果有新的業(yè)務(wù)玩法進(jìn)來(lái),原來(lái)的流程滿(mǎn)足不了需求,我們可以基于模板類(lèi)編寫(xiě)新的子類(lèi)。

適用場(chǎng)景:

  • 希望控制算法的主流程,不能隨意變更框架,但又想保留子類(lèi)業(yè)務(wù)的個(gè)性擴(kuò)展。
  • 去除重復(fù)代碼。保留父類(lèi)通用的代碼邏輯,讓子類(lèi)不再需要重復(fù)處理公用邏輯,只關(guān)注特定邏輯,起到去除子類(lèi)中重復(fù)代碼的目的。
  • 案例很多,比如 Jenkins 的拉取代碼、編譯、打包、發(fā)布、部署的流程作為一個(gè)通用的流程,不同系統(tǒng)(java、python、nodejs等)可以根據(jù)自身的需求開(kāi)發(fā),定制自己的持續(xù)發(fā)布流程。

2、策略模式

定義:

定義一系列算法,并將每種算法分別放入獨(dú)立的類(lèi)中,以使算法的對(duì)象能夠相互替換。

由客戶(hù)端自己決定在什么樣的情況下使用哪些具體的策略。

核心思路:

  • 上下文信息類(lèi)(Context):使用不同的策略環(huán)境,根據(jù)自身的條件選擇不同的策略實(shí)現(xiàn)類(lèi)來(lái)完成所需要的操作。他持有一個(gè)策略實(shí)例的引用。
  • 抽象策略類(lèi)(Strategy):抽象策略,定義每個(gè)策略都要實(shí)現(xiàn)的方法
  • 具體策略類(lèi)(A Realize):負(fù)責(zé)實(shí)現(xiàn)抽象策略中定義的策略方法。
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!


代碼示例:

/**
?*?@author 微信公眾號(hào):微觀技術(shù)
?*/
public?interface?PromotionStrategy?{
????//?活動(dòng)類(lèi)型
????String?promotionType();
????//?活動(dòng)優(yōu)惠
????int?recommand(String?productId);
}

public?class?FullSendPromotion?implements?PromotionStrategy?{
????@Override
????public?String?promotionType()?{
????????return?"FullSend";
????}

????@Override
????public?int?recommand(String?productId)?{
????????System.out.println("參加滿(mǎn)送活動(dòng)");
????????return?0;
????}
}

public?class?FullReducePromotion?implements?PromotionStrategy?{
????@Override
????public?String?promotionType()?{
????????return?"FullReduce";
????}

????@Override
????public?int?recommand(String?productId)?{
????????System.out.println("參加滿(mǎn)減活動(dòng)");
????????return?0;
????}
}

@author 微信公眾號(hào):微觀技術(shù)
public?class?Context?{

????private?static?List?promotionStrategyList?=?new?ArrayList<>();
????static?{
????????promotionStrategyList.add(new?FullReducePromotion());
????????promotionStrategyList.add(new?FullSendPromotion());
????}
????public?void?recommand(String?promotionType,?String?productId)?{
????????PromotionStrategy?promotionStrategy?=?null;
????????//?找到對(duì)應(yīng)的策略類(lèi)
????????for?(PromotionStrategy?temp?:?promotionStrategyList)?{
????????????if?(temp.promotionType().equals(promotionType))?{
????????????????promotionStrategy?=?temp;
????????????}
????????}
????????//?策略子類(lèi)調(diào)用
????????promotionStrategy.recommand(productId);
????}

首先,定義活動(dòng)策略的接口類(lèi)PromotionStrategy,定義接口方法,每一種具體的策略算法都要實(shí)現(xiàn)該接口,FullSendPromotionFullReducePromotion

Context負(fù)責(zé)存儲(chǔ)和使用策略,匯集了所有的策略子類(lèi)。并根據(jù)傳入的參數(shù),匹配到具體的策略子類(lèi),然后調(diào)用recommand方法,處理具體的業(yè)務(wù)。

使用策略的好處:

  • 提升代碼的可維護(hù)性。不同策略類(lèi)隔離,互不影響。每一次新增策略時(shí)都通過(guò)新增類(lèi)來(lái)進(jìn)行隔離,避免了if-else超大的復(fù)雜類(lèi)
  • 動(dòng)態(tài)快速地替換更多的算法。由于調(diào)度策略與算法實(shí)現(xiàn)分離,且接口規(guī)范固定,我們可以靈活的調(diào)整選擇不同的策略子類(lèi)。
適用場(chǎng)景:

  • 壓縮文件,提供了 gzip、zip 、rar 等格式,由客戶(hù)端自己選擇哪一種壓縮策略。不同策略可以相互替換。
  • 營(yíng)銷(xiāo)活動(dòng),根據(jù)策略路由選擇不同的活動(dòng)玩法,不同的營(yíng)銷(xiāo)活動(dòng)隔離,滿(mǎn)足開(kāi)閉原則。
  • 選擇權(quán)交給了客戶(hù)端,適合那些經(jīng)常調(diào)整策略的to C 業(yè)務(wù),靈活性高。

3、狀態(tài)模式

定義:

一種行為設(shè)計(jì)模式,讓你能在一個(gè)對(duì)象的內(nèi)部狀態(tài)變化時(shí)改變其行為,使其看上去就像改變了自身所屬的類(lèi)一樣。

通過(guò)定義一系列狀態(tài)的變化來(lái)控制行為的變化。以電商為例,用戶(hù)的訂單會(huì)經(jīng)歷以下這些狀態(tài):已下單、已付款、已發(fā)貨、派送中、待取件、已簽收、交易成功、交易關(guān)閉等狀態(tài)。

核心思路:

  • 上下文信息類(lèi)(OrderContext):存儲(chǔ)當(dāng)前狀態(tài)的類(lèi),對(duì)外提供更新?tīng)顟B(tài)的方法。
  • 抽象狀態(tài)類(lèi)(OrderState):可以是一個(gè)接口或抽象類(lèi),用于聲明狀態(tài)更新時(shí)執(zhí)行哪些操作
  • 具體狀態(tài)類(lèi)(MakeOrderState、PayOrderState、ReceiveGoodOrderState):實(shí)現(xiàn)抽象狀態(tài)類(lèi)定義的方法,根據(jù)具體的場(chǎng)景來(lái)指定對(duì)應(yīng)狀態(tài)改變后的代碼實(shí)現(xiàn)邏輯。
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

代碼示例:

/**
?*?@author 微信公眾號(hào):微觀技術(shù)
?*?訂單狀態(tài),接口定義(擴(kuò)展實(shí)現(xiàn)若干不同狀態(tài)的子類(lèi))
?*/
public?interface?OrderState?{
????void?handle(OrderContext?context);
}

//?下單
public?class?MakeOrderState?implements?OrderState?{
????public?static?MakeOrderState?instance?=?new?MakeOrderState();
????@Override
????public?void?handle(OrderContext?context)?{

????????System.out.println("1、創(chuàng)建訂單");
????????context.setCurrentOrderState(PayOrderState.instance);
????}
}

//?付款、確認(rèn)收貨,實(shí)現(xiàn)類(lèi)相似,這里省略。。。。

//?訂單上下文
public?class?OrderContext?{
????private?OrderState?currentOrderState;

????public?OrderContext(OrderState?currentOrderState)?{
????????if?(currentOrderState?==?null)?{
????????????this.currentOrderState?=?new?MakeOrderState();
????????}?else?{
????????????this.currentOrderState?=?currentOrderState;
????????}
????}

????public?void?setCurrentOrderState(OrderState?currentOrderState)?{
????????this.currentOrderState?=?currentOrderState;
????}

????public?void?execute()?{
????????currentOrderState.handle(this);
????}
}
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

運(yùn)行結(jié)果:

1、創(chuàng)建訂單
2、支付寶付款
3、確認(rèn)收到貨物
狀態(tài)模式設(shè)計(jì)的核心點(diǎn)在于找到合適的抽象狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移關(guān)系,通過(guò)改變狀態(tài)來(lái)達(dá)到改變行為的目的。

適用場(chǎng)景:

  • 業(yè)務(wù)需要根據(jù)狀態(tài)的變化,進(jìn)行不同的操作。比如:電商下單的全流程
  • 不希望有大量的if-else代碼堆在一起,希望不同的狀態(tài)處理邏輯隔離,遵守開(kāi)閉原則

4、觀察者模式

定義:

也稱(chēng) 發(fā)布-訂閱模式,是一種通知機(jī)制,當(dāng)一個(gè)對(duì)象改變狀態(tài)時(shí),它的所有依賴(lài)項(xiàng)都會(huì)自動(dòng)得到通知和更新。讓發(fā)送通知的一方(被觀察者)和接收通知的一方(觀察者,支持多個(gè))能彼此分離,互不影響,該模式在軟件開(kāi)發(fā)中非常流行。

像我們常見(jiàn)的KafkaRocketMQ等消息中間件都是采用這種架構(gòu)模式,還有SpringApplicationEvent 異步事件驅(qū)動(dòng),有很好的低耦合特性。

類(lèi)似其他叫法:

  • 發(fā)布者 --- 訂閱者
  • 生產(chǎn)者 --- 消費(fèi)者
  • 事件發(fā)布 --- 事件監(jiān)聽(tīng)
核心思路:

  • 發(fā)布者(Publisher):定義一系列接口,用來(lái)管理和觸發(fā)訂閱者
  • 具體發(fā)布者(PublisherImpl):具體實(shí)現(xiàn)類(lèi),實(shí)現(xiàn)Publisher接口定義的方法
  • 訂閱者(Observer):觀察者接口,當(dāng)發(fā)布者發(fā)布消息或事件時(shí),會(huì)通知到訂閱者進(jìn)行處理。
  • 具體訂閱者(WeixinObserver、EmailObserver):Observer的子類(lèi),用來(lái)處理具體的業(yè)務(wù)邏輯
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

代碼示例:

/**
?*?@author 微信公眾號(hào):微觀技術(shù)
?*?
?*?被觀察者
?*/
public?interface?Publisher?{
????void?add(Observer?observer);
????void?remove(Observer?observer);
????void?notify(Object?object);
}

public?class?PublisherImpl?implements?Publisher?{
????private?List?observerList?=?new?ArrayList<>();
????@Override
????public?void?add(Observer?observer)?{
????????observerList.add(observer);
????}
????@Override
????public?void?remove(Observer?observer)?{
????????observerList.remove(observer);
????}
????@Override
????public?void?notify(Object?object)?{
????????System.out.println("創(chuàng)建訂單,并發(fā)送通知事件");
????????observerList.stream().forEach(t?->?t.handle());
????}
}

//?觀察者接口
public?interface?Observer?{
????public?void?handle();
}

//?觀察者子類(lèi)
public?class?EmailObserver?implements?Observer?{
????@Override
????public?void?handle()?{
????????System.out.println("發(fā)送郵件通知!");
????}
}
觀察者模式的核心精髓:被觀察者定義了一個(gè)通知列表,收集了所有的觀察者對(duì)象,當(dāng)被觀察者需要發(fā)出通知時(shí),就會(huì)通知這個(gè)列表的所有觀察者。

適用場(chǎng)景:

  • 當(dāng)一個(gè)對(duì)象狀態(tài)的改變需要改變其他對(duì)象時(shí)。比如:訂單支付成功后,需要通知扣減賬戶(hù)余額
  • 一個(gè)對(duì)象發(fā)生改變時(shí)只想要發(fā)送通知,而不需要知道接收者是誰(shuí)。比如:微博feed流,粉絲能拉到最新微博
  • 代碼的擴(kuò)展性強(qiáng),如果需要新增一個(gè)觀察者業(yè)務(wù)處理,只需新增一個(gè)子類(lèi)觀察者,并注入到被觀察者的通知列表即可,代碼的耦合性非常低。

5、訪(fǎng)問(wèn)者模式

定義:

訪(fǎng)問(wèn)者模式是一種將操作與對(duì)象結(jié)構(gòu)分離的軟件設(shè)計(jì)模式,允許在運(yùn)行時(shí)將一個(gè)或多個(gè)操作應(yīng)用于一組對(duì)象。

核心思路:

  • 行為接口(RouterVisitor):定義對(duì)每個(gè) Element 訪(fǎng)問(wèn)的行為,方法參數(shù)就是被訪(fǎng)問(wèn)的元素,它的方法個(gè)數(shù)理論上與元素的個(gè)數(shù)是一樣的。
  • 行為接口實(shí)現(xiàn)類(lèi)(LinuxRouterVisitor、WindowRouterVisitor):它需要給出對(duì)每一個(gè)元素類(lèi)訪(fǎng)問(wèn)時(shí)所產(chǎn)生的具體行為。
  • 元素接口(RouterElement):定義一個(gè)可以獲取訪(fǎng)問(wèn)操作的接口,使客戶(hù)端對(duì)象能夠“訪(fǎng)問(wèn)”的入口點(diǎn)。
  • 元素接口實(shí)現(xiàn)類(lèi)(JhjRouterElement、LyqRouterElement):將訪(fǎng)問(wèn)者RouterVisitor傳遞給此對(duì)象作為參數(shù)。
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

代碼示例:

/**
?*?@author 微信公眾號(hào):微觀技術(shù)
?*?定義行為動(dòng)作
?*/
public?interface?RouterVisitor?{
????//?交換機(jī),發(fā)送數(shù)據(jù)
????void?sendData(JhjRouterElement?jhjRouterElement);
????//?路由器,發(fā)送數(shù)據(jù)
????void?sendData(LyqRouterElement?lyqRouterElement);
}

public?class?LinuxRouterVisitor?implements?RouterVisitor?{
????@Override
????public?void?sendData(JhjRouterElement?jhjRouterElement)?{
????????System.out.println("Linux?環(huán)境下,交換機(jī)發(fā)送數(shù)據(jù)");
????}

????@Override
????public?void?sendData(LyqRouterElement?lyqRouterElement)?{
????????System.out.println("Linux?環(huán)境下,路由器發(fā)送數(shù)據(jù)");
????}
}

public?class?WindowRouterVisitor?implements?RouterVisitor?{
???//?省略。。。
}


/**
?*?@author 微信公眾號(hào):微觀技術(shù)
?*?
?*?路由元素
?*/
public?interface?RouterElement?{
????//?發(fā)送數(shù)據(jù)
????void?sendData(RouterVisitor?routerVisitor);
}
public?class?JhjRouterElement?implements?RouterElement?{

????@Override
????public?void?sendData(RouterVisitor?routerVisitor)?{
????????System.out.println("交換機(jī)開(kāi)始工作。。。");
????????routerVisitor.sendData(this);
????}
}
public?class?LyqRouterElement?implements?RouterElement?{
?//?省略。。。
}
適用場(chǎng)景:

  • 動(dòng)態(tài)綁定不同的對(duì)象和對(duì)象操作
  • 通過(guò)行為與對(duì)象結(jié)構(gòu)的分離,實(shí)現(xiàn)對(duì)象的職責(zé)分離,提高代碼復(fù)用性

6、備忘錄模式

定義:

也叫快照模式,用來(lái)存儲(chǔ)另外一個(gè)對(duì)象內(nèi)部狀態(tài)的快照,便于以后可以恢復(fù)。

核心思路:

  • 原始對(duì)象(Originator):除了創(chuàng)建自身所需要的屬性和業(yè)務(wù)邏輯外,還通過(guò)提供方法 bak()restore(memento) 來(lái)保存和恢復(fù)對(duì)象副本。
  • 備忘錄(Memento):用于保存原始對(duì)象的所有屬性狀態(tài),以便在未來(lái)進(jìn)行恢復(fù)操作。
看完這篇,code?review?誰(shuí)敢噴你代碼寫(xiě)的爛?懟回去!

代碼示例:

/**
?*?@author 微信公眾號(hào):微觀技術(shù)
?*?原始對(duì)象
?*/
@Data
public?class?Originator?{
????private?Long?id;
????private?String?productName;
????private?String?picture;
????//?創(chuàng)建快照
????public?Memento?bak()?{
????????return?new?Memento(id,?productName,?picture);
????}
????//恢復(fù)
????public?void?restore(Memento?m)?{
????????this.id?=?m.getId();
????????this.productName?=?m.getProductName();
????????this.picture?=?m.getPicture();
????}
}


//?快照
@Data
@AllArgsConstructor
public?class?Memento?{
????private?Long?id;
????private?String?productName;
????private?String?picture;
}
適用場(chǎng)景:

  • 在線(xiàn)編輯器,不小心關(guān)閉瀏覽器,重新打開(kāi)頁(yè)面,可以從草稿箱恢復(fù)之前內(nèi)容
  • 不希望外界直接訪(fǎng)問(wèn)對(duì)象的內(nèi)部狀態(tài),比如:物流包裹
  • 另外像操作系統(tǒng)自動(dòng)備份,數(shù)據(jù)庫(kù)的SAVEPOINT

寫(xiě)在最后

設(shè)計(jì)模式很多人都學(xué)習(xí)過(guò),但項(xiàng)目實(shí)戰(zhàn)時(shí)總是暈暈乎乎,原因在于沒(méi)有了解其核心是什么,底層邏輯是什么,《設(shè)計(jì)模式:可復(fù)用面向?qū)ο蟮幕A(chǔ)》有講過(guò),

在設(shè)計(jì)中思考什么應(yīng)該變化,并封裝會(huì)發(fā)生變化的概念。

軟件架構(gòu)的精髓:找到變化,封裝變化。

業(yè)務(wù)千變?nèi)f化,沒(méi)有固定的編碼答案,千萬(wàn)不要硬套設(shè)計(jì)模式。無(wú)論選擇哪一種設(shè)計(jì)模式,盡量要能滿(mǎn)足SOLID原則,自我review是否滿(mǎn)足業(yè)務(wù)的持續(xù)擴(kuò)展性。有句話(huà)說(shuō)的好,“不論白貓黑貓,能抓老鼠就是好貓?!?/span>

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶(hù)體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉