Có, tuyệt đối bạn có thể có một công việc đơn giản của WorldBuilder là tạo ra một thế giới được cấu hình đầy đủ bao gồm Cửa, Tường và Phòng. Điều này rất hữu ích khi bạn không muốn có một đối tượng thế giới được xây dựng một phần và có thể không hợp lệ.
Hãy nói rằng việc sử dụng của người xây dựng là như thế này:
WorldBuilder builder = new WorldBuilder();
// read the definition of a room from an XML file or other source.
// this is vastily simplified, you'd probably be iteration
// something like this:
//
// for each Room in file
// for each wall in room
// for each door in wall
//
roomId = readRoomId();
wallId = readWallId();
doorId = readDoorId();
destRoomId = readDestinationRoomId();
builder.AddRoom(roomId);
builder.AddWallToRoom(roomId, wallId, SIDE.NORTH);
builder.AddDoorToWall(wallId, DOORSTYLE.WOODEN | DOORSTYLE.LOCKED, destRoomId);
// etc, etc
World world = builder.makeWorld();
Một cách tiếp cận phi xây dựng có thể muốn làm một cái gì đó như thế này để kết nối hai phòng các đối tượng:
Door door = new Door(roomOne, roomTwo);
Nhưng nếu bạn đang lặp lại từng phòng từ một tệp như trước đó, bạn sẽ không có tham chiếu đến phòng thứ hai vì nó có thể chưa đạt được.
Một phương pháp khác là để cho mỗi đối tượng chỉ ID của hàng xóm hoặc cha mẹ của nó, do đó bạn có được điều này thay vào đó, cho phép bạn tham khảo một đối tượng mà chưa được nạp nào:
Door door = new Door(roomOneId, roomTwoId);
Nhưng nếu đã xảy ra lỗi trong tệp và phòng 2 chưa bao giờ được xác định thì Thế giới sẽ không hợp lệ. Nhà xây dựng có thể quản lý tất cả các chi tiết về việc xây dựng, kết nối và xác nhận hợp lệ quy trình tạo thế giới, cấp tính linh hoạt cho mã máy khách muốn tạo ra thế giới và giải phóng đối tượng thế giới của logic xây dựng phức tạp.
Xin chào. Im chỉ được phép sử dụng mẫu trình xây dựng. – mrjasmin