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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Builder建造者设计模式

發(fā)布時(shí)間:2025/1/21 asp.net 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Builder建造者设计模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

案例一?

案例二


?

使用場景:當(dāng)構(gòu)建一個(gè)復(fù)雜的對象需要傳入很多參數(shù)的時(shí)候,或者是一個(gè)對象的屬性有很多,但是使用時(shí)也許只需要這個(gè)對象的幾個(gè)屬性,如果使用構(gòu)造器的話,就得將不需要的參數(shù)也傳個(gè)null進(jìn)去,比方說一個(gè)對象有100個(gè)屬性,但是我只需要里面的2個(gè)屬性,那我得new對象時(shí)傳98個(gè)null進(jìn)去,這兩種情況下就可以選擇使用建造者模式。?

案例一?

實(shí)體類?

public class Terrain {Wall w;Fort f;Mine m; }class Wall {int x, y, w, h;public Wall(int x, int y, int w, int h) {this.x = x;this.y = y;this.w = w;this.h = h;} }class Fort {int x, y, w, h;public Fort(int x, int y, int w, int h) {this.x = x;this.y = y;this.w = w;this.h = h;}}class Mine {int x, y, w, h;public Mine(int x, int y, int w, int h) {this.x = x;this.y = y;this.w = w;this.h = h;} }

?接口

每個(gè)方法的返回值都是TerrainBuilder對象,就可以實(shí)現(xiàn)鏈?zhǔn)骄幊獭?/p> public interface TerrainBuilder {TerrainBuilder buildWall();TerrainBuilder buildFort();TerrainBuilder buildMine();Terrain build(); }

實(shí)現(xiàn)?

public class ComplexTerrainBuilder implements TerrainBuilder {Terrain terrain = new Terrain();@Overridepublic TerrainBuilder buildWall() {terrain.w = new Wall(10, 10, 50, 50);return this;}@Overridepublic TerrainBuilder buildFort() {terrain.f = new Fort(10, 10, 50, 50);return this;}@Overridepublic TerrainBuilder buildMine() {terrain.m = new Mine(10, 10, 50, 50);return this;}@Overridepublic Terrain build() {return terrain;} }

測試?

public class Main {public static void main(String[] args) {TerrainBuilder builder = new ComplexTerrainBuilder();Terrain t = builder.buildFort().buildMine().buildWall().build();} }

案例二

Person類,假設(shè)有100個(gè)參數(shù)?

public class Person {int id;String name;int age;double weight;int score;Location loc;private Person() {}public static class PersonBuilder {Person p = new Person();public PersonBuilder basicInfo(int id, String name, int age) {p.id = id;p.name = name;p.age = age;return this;}public PersonBuilder weight(double weight) {p.weight = weight;return this;}public PersonBuilder score(int score) {p.score = score;return this;}public PersonBuilder loc(String street, String roomNo) {p.loc = new Location(street, roomNo);return this;}public Person build() {return p;}} }class Location {String street;String roomNo;public Location(String street, String roomNo) {this.street = street;this.roomNo = roomNo;} }

測試

public class Main {public static void main(String[] args) {Person p = new Person.PersonBuilder().basicInfo(1, "zhangsan", 18)//.score(20).weight(200)//.loc("bj", "23").build();} }

?

總結(jié)

以上是生活随笔為你收集整理的Builder建造者设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。