Java建造者模式是什么?如何实现?(附代码)
本篇文章给大家带来的内容是关于Java建造者模式是什么?如何实现?(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
建造者模式
一、什么是建筑者模式?
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建一个复杂的对象。
一个 Builder 类会一步一步构造最终的对象,该 Builder 类独立于其他对象。
建造者模式主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
二、建造者模式的具体实现
结构图
建造者模式中的四个角色:
Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。
ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。
Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。
Product:要创建的复杂对象。
java代码实现
1、创建人类实体类
package com.designpattern.builderPattern; /** * 对象 人 * * @author zhongtao on 2018/9/17 */ public class Human { private String head; private String body; private String hand; private String foot; public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getHand() { return hand; } public void setHand(String hand) { this.hand = hand; } public String getFoot() { return foot; } public void setFoot(String foot) { this.foot = foot; } }
2、创建造人的 Builder 接口
package com.designpattern.builderPattern; /** * 造人接口 规定造人的规范 需要头、身体、手、脚 * * @author zhongtao on 2018/9/17 */ public interface BuilderHuman { void buildHead(); void buildBody(); void buildHand(); void buildFoot(); /** * 返回创建的对象 */ Human createHuman(); }
3、ConcreteBuilder 创建不同类型的人
tallPerson
package com.designpattern.builderPattern; /** * 高个子的人 * * @author zhongtao on 2018/9/17 */ public class TallPersonBuilder implements BuilderHuman { Human human; public TallPersonBuilder() { human = new Human(); } @Override public void buildHead() { human.setHead("普通的头脑"); } @Override public void buildBody() { human.setBody("壮实,高大的身体"); } @Override public void buildHand() { human.setHand("长手"); } @Override public void buildFoot() { human.setFoot("长脚"); } @Override public Human createHuman() { return human; } }
smartHuman
package com.designpattern.builderPattern; /** * 聪明的人 * * @author zhongtao on 2018/9/17 */ public class SmartHumanBuilder implements BuilderHuman { Human human; public SmartHumanBuilder() { human = new Human(); } @Override public void buildHead() { human.setHead("高智商的头脑"); } @Override public void buildBody() { human.setBody("健康的身体"); } @Override public void buildHand() { human.setHand("普通的手"); } @Override public void buildFoot() { human.setFoot("普通的脚"); } @Override public Human createHuman() { return human; } }
4、Director 建造者模式的核心 调用具体建造者来创建不同的人
package com.designpattern.builderPattern; /** * 管理造人的顺序 BuilderHuman不同,则创建的人不同 * @author zhongtao on 2018/9/17 */ public class HumanDirector { public Human createHumanByDirector(BuilderHuman builderHuman){ builderHuman.buildHead(); builderHuman.buildBody(); builderHuman.buildHand(); builderHuman.buildFoot(); return builderHuman.createHuman(); } }
5、建造者模式测试
package com.designpattern.builderPattern; import org.junit.Test; /** * 测试 * * @author zhongtao on 2018/9/17 */ public class BuilderPatternTest { /** * 测试建造者模式 */ @Test public void test() { HumanDirector humanDirector = new HumanDirector(); //创建高个子的人 Human humanByDirector = humanDirector.createHumanByDirector(new TallPersonBuilder()); System.out.println(humanByDirector.getHead()); System.out.println(humanByDirector.getBody()); System.out.println(humanByDirector.getHand()); System.out.println(humanByDirector.getFoot()); System.out.println("------简单的分割线------"); //创建聪明的人 Human smartHuman = humanDirector.createHumanByDirector(new SmartHumanBuilder()); System.out.println(smartHuman.getHead()); System.out.println(smartHuman.getBody()); System.out.println(smartHuman.getHand()); System.out.println(smartHuman.getFoot()); } }
三、建造者模式的优缺点
优点:
建造者独立,易扩展。
便于控制细节风险。
缺点:
产品必须有共同点,范围有限制。
如内部变化复杂,会有很多的建造类。
注意事项:
与工厂模式的区别,建造者模式更加关注与零件装配的顺序。
Atas ialah kandungan terperinci Java建造者模式是什么?如何实现?(附代码). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4
