日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

myeclipse怎么创建jframe类_创建型-建造者模式

發布時間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 myeclipse怎么创建jframe类_创建型-建造者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個對象創建的時候,需要各種初始化化,有一套復雜的創建流程,如果這些流程散布在系統各個地方的話,會越來越難以維護,因此建造者模式就是把一套復雜的創建某個具體產品的流程,管理起來。

定義:

將一個復雜的對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

建造者模式又叫創建者模式。創建者模式隱藏了復雜對象的創建過程,它把復雜對象的創建過程加以抽象,通過子類繼承或者重載的方式,動態的創建具有復合屬性的對象。在用戶不知道對象的建造過程和細節的情況下就可以直接創建復雜的對象。

類圖:

包含以下角色:

  • 導演類:負責調用適當的建造者來組建產品,導演類一般不與產品類發生依賴關系,一般充當提出需求的角色。與導演類直接交互的是建造者類。一般來說,導演類被用來封裝程序中易變的部分。
  • 抽象建造者:引入抽象建造者的目的,是為了將建造的具體過程交與它的子類來實現。這樣更容易擴展。一般至少會有兩個抽象方法,一個用來建造產品,一個是用來返回產品。
  • 建造者:實現抽象類的所有未實現的方法,具體來說一般是兩項任務:組建產品;返回組建好的產品。其實內部還是調用產品的函數。
  • 產品類:一般是一個較為復雜的對象,也就是說創建對象的過程比較復雜,一般會有比較多的代碼量。在本類圖中,產品類是一個具體的類,而非抽象類。實際編程中,產品類可以是由一個抽象類與它的不同實現組成,也可以是由多個抽象類與他們的實現組成。

模式流程:

  • 指揮者(Director)直接和客戶(Client)進行需求溝通,控制建造者制造產品,最后給客戶返回完整的產品;
  • 其中,在指揮者中控制構建的流程,建造者類只負責各個部件功能模塊的實現;
  • 其中,建造者基類可以派生出不同的建造者子類來構建不同的產品;
  • 導演類提出需求之后,任務交接給了建造者。建造者有個基類來約定建造流程和返回產品等功能,由具體的建造者實施建造。

例子:

外部用戶無需知道汽車是怎么創造出來的,他只需要給一個導演講,他想要一個大眾汽車,那么導演自動返回一個大眾汽車。

用戶有不同的需求,導演就有不同的手段來滿足需求,來支配建造者實際真正的造一個東西出來, 在建造者建造的過程中,不斷的給產品加裝新功能,最終一件成品就出來啦。只不過加裝的過程中,調用的是產品自己的加裝函數。如: 汽車.設置發動機(發動機A);

導演只有一個,他可以造大眾和悍馬等不同的產品;

建造者有一套相同的流程,被抽象成了一個基類,具體的建造流程的實現,由子類來實現,比如 造大眾建造者類和造悍馬建造者類;

產品也繼承同一個基類,派生出不同的產品類;

這樣,我們既可以清晰的理出裝配的流程,又能裝配出不同的物品來。

代碼實現:

游戲開發中,角色的創建可能比較復雜,因此需要建造者模式來創建角色并進行一些初始化。

角色分為玩家和敵人,他們的初始化方式有設置出生位置和設置技能。

當外部需要創建玩家或者敵人時,只需要告訴導演類,然后導演類控制角色創建的流程,建造者控制角色各個單獨功能的實現。

產品:

//產品基類 abstract class Product {public abstract void SetPosition();public abstract void SetSkill();public abstract void ShowInfo(); }//產品子類:玩家類 class Player : Product {public override void SetPosition(){Console.WriteLine("玩家設置位置");}public override void SetSkill(){Console.WriteLine("玩家設置技能");}public override void ShowInfo(){Console.WriteLine("玩家:位置xx,技能xx");} }//產品子類:敵人類 class Enemy : Product {public override void SetPosition(){Console.WriteLine("敵人設置位置");}public override void SetSkill(){Console.WriteLine("敵人設置技能");}public override void ShowInfo(){Console.WriteLine("敵人:位置xx,技能xx");} }

建造者:

//建造者基類 abstract class Builder {abstract public void SetProductPosition();abstract public void SetProductSkill();abstract public Product GetProduct(); }//建造者子類:玩家建造者 class PlayerBuilder : Builder {Player player = new Player();public override void SetProductPosition(){player.SetPosition();}public override void SetProductSkill(){player.SetSkill();}public override Product GetProduct(){return player;} }//建造者子類:敵人建造者 //...

導演類:

//導演類:負責建造流程的控制 class Director {//創建玩家public Product CreatePlayer(){PlayerBuilder playerBuilder = new PlayerBuilder();playerBuilder.SetProductPosition();playerBuilder.SetProductSkill();return playerBuilder.GetProduct();}//創建敵人public void CreateEnemy(){//...同上,略} }

客戶端:

void Main() {Director director = new Director();Product player = director.CreatePlayer();player.ShowInfo(); }

靈魂拷問:

1.工廠與建造者模式的聯系和區別?
造汽車
工廠與建造者模式:工廠負責制造汽車,組裝過程和細節在工廠內的建造者來實現;
買汽車
汽車購買者(用戶):你只需要說出你需要的型號(對象的類型和內容),然后直接購買就可以使用了
(不需要知道汽車是怎么組裝的(車輪、車門、發動機、方向盤等等))

工廠模式和建造者模式的關系:
與抽象工廠模式相比,建造者模式返回一個組裝好的完整產品,而抽象工廠模式返回一系列相關的產品,這些產品位于不同的產品等級結構,構成了一個產品族 。
在抽象工廠模式中,客戶端實例化工廠類,然后調用工廠方法獲取所需產品對象,而在建造者模式中,客戶端可以不直接調用建造者的相關方法,而是通過指揮者類來指導如何生成對象,包括對象的組裝過程和建造步驟,它側重于一步步構造一個復雜對象,返回一個完整的對象 。
如果將抽象工廠模式看成汽車配件生產工廠,生產一個產品族的產品,那么建造者模式就是一個汽車組裝工廠,通過對部件的組裝可以返回一輛完整的汽車

2.還是這個玩家和敵人的例子,如果將建造者和工廠模式結合起來,應該怎么設計代碼呢?

建造者代碼不需要怎么修改,只需要加上工廠代碼即可。其實就是把之前工廠內部直接new 一個對象,變成由建造者來詳細建造。

導演類做成單例模式:

//導演類:負責建造流程的控制 class Director {//單例public static Director ins = new Director();//... }

工廠代碼:

//工廠基類 abstract class Factory {abstract public Product NewProduct(); }//玩家工廠 class PlayerFactory : Factory {public override Product NewProduct(){return Director.ins.CreatePlayer();} }//敵人工廠 //...

客戶端:

void Main() {Product player = new PlayerFactory().NewProduct();player.ShowInfo(); }

總結

以上是生活随笔為你收集整理的myeclipse怎么创建jframe类_创建型-建造者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。