每天一个设计模式之建造者(Builder)模式

建造者(Builder)模式设计原理

建造者模式也是属于创建模式的一种,该设计模式提供了一种较为复杂的创建对象并调用其中方法的方式。
一个较为普遍的建造者模式主要是使用多个接口分别定义了相应的规范,其中一个接口提供了获得其他接口的实现类的对象的方法。又有多个抽象类实现这个接口,这些抽象类也分别有多个或一个子类,这些子类重写了抽象类中继承了该接口的方法。又创建了一个类①,用一个集合去装载我们创建的多个抽象类的子类对象,里面包括了各种方法去完成对子类的记录,展示等功能。最后再创建一个Builder类去获取类①的对象。

下面举一个购买水果与蔬菜的Builder模式实例。
建造者模式的设计原理图如下:
建造者模式

建造者(Buider)模式代码设计

1、接口的设计

  • Food接口,提供了一些实现类公共的抽象方法来展示实现类的属性和特征,并提供另一个方法用来接收其他接口的实现类的对象
public interface Food {
   
    String name();
    int price();
    BuyType getBuyType();
}
  • BuyType接口,进行编写一些抽象方法供实现类重写,提供给其它接口的实现抽象类去获得
public interface BuyType {
   
    String buType();
}

2、BuyType接口的实现类设计

  • OnlineShopping类,可以用于描述另一个主接口(Food)中的某一种实现方式或特性。在该实例中代表购买方式
public class OnlineShopping implements BuyType{
   
    @Override
    public String buType() {
   
        return "OnlineShopping";
    }
}
  • VegetableMarket类,可以用于描述另一个主接口(Food)中的某一种实现方式或特性。在该实例中代表购买方式
public class VegetableMarket implements BuyType{
   
    @Override
    public String buType() {
   
        return "VegetableMarket";
    }
}

3、抽象类的设计

  • Fruit类,获得了实现接口中的方法,并重写方法getBuyType()获取其他接口实现类的对象
public abstract class Fruit implements Food{
   
    @Override
    public BuyType getBuyType() {
   
        return new OnlineShopping();
    }
}
  • Vegetable类,获得了实现接口中的方法,并重写方法getBuyType()获取其他接口实现类的对象
public abstract class Vegetable implements Food{
   
    @Override
    public BuyType getBuyType() {
   
        return new VegetableMarket();
    }
}

4、抽象类的实现类

Fruit 抽象类的子类,重写继承自父类(以及抽象类从接口中获取的)的抽象方法。完善每一个类代表对象的属性信息等

  • Apple类,返回苹果的name 以及 价格
public class Apple extends Fruit{
   
    @Override
    public String name(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑妖问路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值