當前位置:
首頁 >
设计模式之装饰模式的学习
發布時間:2025/3/15
27
豆豆
生活随笔
收集整理的這篇文章主要介紹了
设计模式之装饰模式的学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:裝飾模式的類圖分析
?
其中類的職責如下: 抽象構件角色(Project):給出一個接口,以規范準備接收附加責任的對象 具體構件角色(Employe):定義一個將要接收附加責任的類 裝飾角色(Manager):持有一個構件對象的實例,并定義一個與抽象構件接口一致的接口 具體裝飾角色(ManagerA、ManagerB):負責給構件對象“貼上”附加的責任 二、下面通過一個軟件項目例子來說明裝飾模式的使用 過程是這樣的: 項目經理接到一個項目,項目最終要完成編碼。 項目經理接到項目后,先做些前期的工作(比如需求分析、設計),然后將編碼工作委派給代碼工人,代碼工人干完后,項目經理做項目的收尾工作。 實現代碼如下: /**???? * 寫代碼
???? */
????void doCoding();
} /**
???? * 編碼
???? */
????public void doCoding(){
????????System.out.println("代碼工人 在編寫代碼,加班編啊編啊,終于編完了!");
????}
} private Project project;????????//實際上存放的是代碼工人對象
????public Manager(Project project) {
????????this.project = project;
????}
????/**
???? * 編碼
???? */
????public void doCoding() {
????????//項目經理開始新的工作
????????startNewWork();
????}
????/**
???? * 模板:定義項目經理自己的事情
???? */
????public void startNewWork() {
????????//項目經理在做早期工作
????????doEarlyWork();
????????//項目經理很牛,做完需求和設計后,直接將編碼委派給代碼工人干
????????project.doCoding();
????????//項目經理在做收尾工作
????????doEndWork();
????}
????/**
???? * 項目經理自己的事情:做早期工作
???? */
????public void doEarlyWork() {
????}
????/**
???? * 項目經理做收尾工作
???? */
????public void doEndWork() {
????}
} public ManagerA(Project project) {
????????super(project);
????}
????/**
???? * 項目經理自己的事情:做早期工作
???? */
????public void doEarlyWork() {
????????System.out.println("項目經理A 在做需求分析");
????????System.out.println("項目經理A 在做架構設計");
????????System.out.println("項目經理A 在做詳細設計");
????}
} public ManagerB(Project project) {
????????super(project);
????}
???? /**
???? * 項目經理自己的事情:做早期工作
???? */
????public void doEarlyWork() {
????????System.out.println("項目經理B 在做需求分析");
????????System.out.println("項目經理B 在做詳細設計");
????}
????/**
???? * 項目經理做收尾工作
???? */
????public void doEndWork() {
????????System.out.println("項目經理B 在做收尾工作");
????}
} public static void main(String args[]) {
????????Project employe = new Employe();????????//代碼工人
????????Project managerA = new ManagerA(employe); //項目經理
????????Project managerB = new ManagerB(employe); //項目經理
????????//以經理的名義將編碼完成,功勞都是經理的,實際編碼的是工人
????????managerA.doCoding();
????????managerB.doCoding();
????}
} 運行結果: 項目經理A 在做需求分析
項目經理A 在做架構設計
項目經理A 在做詳細設計
代碼工人 在編寫代碼,加班編啊編啊,終于編完了!
項目經理B 在做需求分析
項目經理B 在做詳細設計
代碼工人 在編寫代碼,加班編啊編啊,終于編完了!
項目經理B 在做收尾工作
Process finished with exit code 0
備注:轉自 http://lavasoft.blog.51cto.com/62575/90853/
?
轉載于:https://www.cnblogs.com/goldberg/p/5439195.html
總結
以上是生活随笔為你收集整理的设计模式之装饰模式的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于js复制文本信息(按钮级别)
- 下一篇: ASP.NET Core 源码阅读笔记(