设计模式-创建型模式-生成器
2011-04-19 19:36
337 查看
创建型模式:抽象了实例化过程,它们帮助一个系统如何独立于如何创建、组合和表示它的哪些对象。一个创建型模式使用了继承改变实例化的类,而一个对象的实例化将委托给别一个对象来现实。
Builder模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用必:1、当创建复杂对象的算法应该独立于该对象的组成部份以及他们的装配方式时
2、当构造过程必需允许被构造对象有不同的表示时
package builder;
public class ConcreteHouseBuilderA extends HouseBuilder{
private House house;
public ConcreteHouseBuilderA() {
house = new House();
}
public void BuildRoom(int roomNo) {
//you can create a new Room added to a House
house.roomNumber++;
}
public void BuildDoor(int room1, int room2) {
// you can create a new door assotiated with 2 room
// and added this door into a house
house.doorNumber++;
}
public House getHouse() {
return house;
}
}
package builder;
/*
* A house as a concrete product we got finally
*/
public class House {
int roomNumber;
int doorNumber;
public House() {
roomNumber = 0;
doorNumber = 0;
}
public int getRoomNumber() {
return roomNumber;
}
public int getDoorNumber() {
return doorNumber;
}
}
package builder;
/*
* An abstract Builder
*/
public abstract class HouseBuilder {
public abstract void BuildRoom(int roomNo);
public abstract void BuildDoor(int room1, int room2);
public abstract House getHouse();
}
package builder;
/*
* This class is a Director
*/
public class HouseDirector {
public void CreateHouse(HouseBuilder concreteBuilder) {
concreteBuilder.BuildRoom(1);
concreteBuilder.BuildRoom(2);
concreteBuilder.BuildDoor(1, 2);
//return builder.getHouse();
}
}
package builder;
/*
* A test client to create a house
* but we do not know how the room and door be created
*/
public class TestClient {
public TestClient() {
}
public static void main(String[] args) {
House myHouse = null;
ConcreteHouseBuilderA myHouseBuilder = new ConcreteHouseBuilderA();
HouseDirector myHouseDirector = new HouseDirector();
myHouseDirector.CreateHouse(myHouseBuilder);
myHouse = myHouseBuilder.getHouse();
System.out.println("My house has room :" + myHouse.getRoomNumber());
System.out.println("My house has door :" + myHouse.getDoorNumber());
}
}
Builder模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用必:1、当创建复杂对象的算法应该独立于该对象的组成部份以及他们的装配方式时
2、当构造过程必需允许被构造对象有不同的表示时
package builder;
public class ConcreteHouseBuilderA extends HouseBuilder{
private House house;
public ConcreteHouseBuilderA() {
house = new House();
}
public void BuildRoom(int roomNo) {
//you can create a new Room added to a House
house.roomNumber++;
}
public void BuildDoor(int room1, int room2) {
// you can create a new door assotiated with 2 room
// and added this door into a house
house.doorNumber++;
}
public House getHouse() {
return house;
}
}
package builder;
/*
* A house as a concrete product we got finally
*/
public class House {
int roomNumber;
int doorNumber;
public House() {
roomNumber = 0;
doorNumber = 0;
}
public int getRoomNumber() {
return roomNumber;
}
public int getDoorNumber() {
return doorNumber;
}
}
package builder;
/*
* An abstract Builder
*/
public abstract class HouseBuilder {
public abstract void BuildRoom(int roomNo);
public abstract void BuildDoor(int room1, int room2);
public abstract House getHouse();
}
package builder;
/*
* This class is a Director
*/
public class HouseDirector {
public void CreateHouse(HouseBuilder concreteBuilder) {
concreteBuilder.BuildRoom(1);
concreteBuilder.BuildRoom(2);
concreteBuilder.BuildDoor(1, 2);
//return builder.getHouse();
}
}
package builder;
/*
* A test client to create a house
* but we do not know how the room and door be created
*/
public class TestClient {
public TestClient() {
}
public static void main(String[] args) {
House myHouse = null;
ConcreteHouseBuilderA myHouseBuilder = new ConcreteHouseBuilderA();
HouseDirector myHouseDirector = new HouseDirector();
myHouseDirector.CreateHouse(myHouseBuilder);
myHouse = myHouseBuilder.getHouse();
System.out.println("My house has room :" + myHouse.getRoomNumber());
System.out.println("My house has door :" + myHouse.getDoorNumber());
}
}
相关文章推荐
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 抽象工厂模式(Abstract Factory) - Java实现
- 设计模式杂谈:创建型模式之生成器模式(Builder Pattern)
- 设计模式(6) - 创建型模式总结
- 创建型模式之生成器/建造者BUILDER
- Builder生成器(创建型模式)
- 设计模式(三):创建型模式—Factory Method(工厂方法)
- C#面向对象设计模式纵横谈 学习笔记4 Builder 生成器(创建型模式)
- builder生成器(创建型模式)
- 设计模式(四):SIMPLE FACTORY简单工厂模式 -- 创建型模式
- 设计模式(创建型)之单例模式(Singleton Pattern)
- 设计模式(三) : 创建型模式--工厂方法模式
- Buileder(生成器)—对象创建型模式
- C#面向对象设计模式纵横谈(4):Builder 生成器(创建型模式)
- 设计模式-创建型模式#抽象工厂AbstractFactory
- 设计模式(四)原型模式Prototype(创建型)
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 建造者模式(Builder) - Java实现
- Buileder(生成器)—对象创建型模式
- 设计模式 3.2 Builder(生成器)对象创建型模式
- 设计模式(二) : 创建型模式--简单工厂模式