java 包装者模式_java – 我应该如何将Composite模式包装到Builder模式中?

这是一个制作不同动物部分的动物复合物的建造者的例子.您应该能够针对您的特定应用程序进行修改.

class BuilderDesignPattern{

public static void Main(string[] args)

{

Kid aKid = new Kid();

aKid.Name = "Elizabeth";

AnimalBuilder builderA = new MonkeyBuilder();

aKid.MakeAnimal(builderA);

builderA.aAnimal.ShowMe();

AnimalBuilder builderB = new KittenBuilder();

aKid.MakeAnimal(builderB);

builderB.aAnimal.ShowMe();

}

}

public abstract class AnimalBuilder

{

public Animal aAnimal;

public abstract void BuildAnimalHeader();

public abstract void BuildAnimalBody();

public abstract void BuildAnimalLeg();

public abstract void BuildAnimalArm();

public abstract void BuildAnimalTail();

}

public class MonkeyBuilder : AnimalBuilder

{

public MonkeyBuilder()

{

aAnimal = new Monkey();

}

public override void BuildAnimalHeader()

{

aAnimal.Head = "Moneky's Head has been built";

}

public override void BuildAnimalBody()

{

aAnimal.Body = "Moneky's Body has been built";

}

public override void BuildAnimalLeg()

{

aAnimal.Leg = "Moneky's Leg has been built";

}

public override void BuildAnimalArm()

{

aAnimal.Arm = "Moneky's Arm has been built";

}

public override void BuildAnimalTail()

{

aAnimal.Tail = "Moneky's Tail has been built";

}

}

public class KittenBuilder : AnimalBuilder

{

public KittenBuilder()

{

aAnimal = new Kitten();

}

public override void BuildAnimalHeader()

{

aAnimal.Head = "Kitten's Head has been built";

}

public override void BuildAnimalBody()

{

aAnimal.Body = "Kitten's Body has been built";

}

public override void BuildAnimalLeg()

{

aAnimal.Leg = "Kitten's Leg has been built";

}

public override void BuildAnimalArm()

{

aAnimal.Arm = "Kitten's Arm has been built";

}

public override void BuildAnimalTail()

{

aAnimal.Tail = "Kitten's Tail has been built";

}

}

public abstract class Animal

{

public BodyPart Head { get; set; }

public BodyPart Body { get; set; }

public BodyPart Leg { get; set; }

public BodyPart Arm { get; set; }

public BodyPart Tail { get; set; }

//helper method for demo the Polymorphism, so we can

//easily tell what type object it is from client.

public abstract void Eat();

//helper method for demo the result from client

public void ShowMe()

{

Console.WriteLine(Head);

Console.WriteLine(Body);

Console.WriteLine(Leg);

Console.WriteLine(Arm);

Console.WriteLine(Tail);

Eat();

}

}

public class Monkey : Animal

{

//helper method to show monkey's property for demo purpose

public override void Eat()

{

Console.WriteLine("Since I am Monkey, I like to eat banana");

}

}

public class Kitten : Animal

{

public override void Eat()

{

Console.WriteLine("Since I am Kitten, I like to eat kitten food");

}

}

public class Kid

{

public string Name { get; set; }

//construct process to build an animal object,

//after this process completed, a object

//will be consider as a ready to use object.

public void MakeAnimal(AnimalBuilder aAnimalBuilder)

{

aAnimalBuilder.BuildAnimalHeader();

aAnimalBuilder.BuildAnimalBody();

aAnimalBuilder.BuildAnimalLeg();

aAnimalBuilder.BuildAnimalArm();

aAnimalBuilder.BuildAnimalTail();

}

}

public class BodyPart{

String name= "";

public BodyPart(String name){

this.name=name;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值