欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > >内容正文

asp.net

builder建造者设计模式 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 22 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 builder建造者设计模式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

案例一 

案例二


 

使用场景:当构建一个复杂的对象需要传入很多参数的时候,或者是一个对象的属性有很多,但是使用时也许只需要这个对象的几个属性,如果使用构造器的话,就得将不需要的参数也传个null进去,比方说一个对象有100个属性,但是我只需要里面的2个属性,那我得new对象时传98个null进去,这两种情况下就可以选择使用建造者模式。 

实体类 

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;} }

 接口

每个方法的返回值都是terrainbuilder对象,就可以实现链式编程。

public interface terrainbuilder {terrainbuilder buildwall();terrainbuilder buildfort();terrainbuilder buildmine();terrain build(); }

实现 

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类,假设有100个参数 

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();} }

 

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的builder建造者设计模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

网站地图