设计模式之建造者模式

定义
将一个复杂的对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示。
适用范围
1.创建复杂对象的算法独立于该对象组成部分以及他们的装配方式
2.允许被构造者对象有不同表示
建造者模式中,有如下四种角色:
1.抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
2.具体建造者(Concrete Builder):实现抽象建造者中定义的所有方法,并且返回一个组件好的产品实例。
3.产品(Product):该角色是建造者中的复杂对象,一个系统中会有多个产品类,这些产品类不一定有共同的接口,可以是完成不相关的。
4.导演者(Director):该角色负责安排已有模块的顺序,然后告诉Builder开始建造
建造者模式实例
(1).抽象建造者类(animalBuilder)

public interface animalBuilder{
void setName(String name);
void setColor(String color);
Animal createAnimal();
}

(2).抽象产品类Animal

public abstruct class Animal{
String name;
String color;

//get和set方法
    public String getName() {
        return color;
    }

    public void setName(String name) {
        this.name = name;
    }
//get和set方法
    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

(3).具体建造者类catBuilder

public class catBuilder implements animalBuilder{
Animal animal=new Cat();

 @Override
    public void setColor(String color) {
        animal.setColor(color);
    }

@Override
    public void setName(String name) {
        animal.setName(name);
    }

 @Override
    public Animal createAnimal() {
        return animal;
    }
  }

(4).具体建造者类dogBuilder

public class dogBuilder implements animalBuilder{
Animal animal=new Dog();

 @Override
    public void setColor(String color) {
        animal.setColor(color);
    }

@Override
    public void setName(String name) {
        animal.setName(name);
    }

 @Override
    public Animal createAnimal() {
        return animal;
    }
  }

(5).具体对象类Cat

public class Cat extends Animal{

public Cat(){
System.out.println("这是一只猫");
}

@Override
public String toString(){
return "猫名字叫:"+name+
             "颜色:"+color;        
}
}

(6).具体对象类Dog

public class Dog extends Animal{

public Dog(){
System.out.println("这是一只狗");
}

@Override
public String toString(){
return "狗名字叫:"+name+
             "颜色:"+color;        
}
}

(7).导演类AnimalDirector

public class AnimalDirector{
private animalBuilder animalBuilder;

public Cat creatCat(){
animalBuilder = new catBuilder();//父类的对象,子类的实例化,多态的使用
animalBuilder.setName("猫1");
animalBuilder.setColor("红色");
return (Cat) animalBuilder.createAnimal();
}

public Dog creatDog(){
animalBuilder = new dogBuilder();//父类的对象,子类的实例化,多态的使用
animalBuilder.setName("狗1");
animalBuilder.setColor("粽色");
return (Dog) animalBuilder.createAnimal();

    }
}

(7).调用者BuilderMethod

public class BuilderMetnod{
public static void main(String[] args){
AnimalDirector director = new AnimalDirector();
//生产小猫
Cat cat = director .creatCat();
System.out.println(cat.toString());

//生产小狗
Dog dog = director .creatDog();
System.out.println(dog.toString());

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值