java 生成器模式_设计模式(13)生成器模式(讲解+应用)

生成器模式是一种对象构建模式,用于将复杂对象的构建过程抽象化,以不同方式构造不同属性的对象。文章介绍了为何使用生成器模式,并通过Pizza类为例,展示了生成器模式的代码结构和应用实例,包括抽象PizzaBuilder、具体Builder类以及构建过程。在Android中,生成器模式用于封装AlertDialog的属性设置,以实现代码的清晰和易于维护。
摘要由CSDN通过智能技术生成

目录

生成器模式+为什么使用生成器模式

应用实例

生成器模式

生成器模式:(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

构建过程,也就是我们在一个类中的那些set方法,通常我们会通过set方法来对类中的属性进行一系列的设置,来获取这些属性,我们通常会通过get方法来获得,如果一个类,其中的属性比较多,我们的set方法因此也会比较多,加上类的其他方法,整个看起来就比较臃肿了,因此我们将这些比较繁杂的设置步骤单独建一个类,来对该类进行相应的属性设置,按照我们的要求构造出原来的类,当然这是从使得代码简洁的角度来说,功能上有点类似于工厂模式,通过不同的生成器来生成各自具有不同特征的对象。不过接下来要讲的Android中的AlertDialog并没有体现这一点。

应用实例

为了更充分了解生成器模式,下面是一段来自维基百科的对于生成器模式讲解时用的一段代码,从中,从中我们不难看出生成器模式的代码结构。

//Pizza基类

class Pizza {

private String dough = "";

private String sauce = "";

private String topping = "";

public void setDough (String dough) { this.dough = dough; }

public void setSauce (String sauce) { this.sauce = sauce; }

public void setTopping (String topping) { this.topping = topping; }

}

//pizza生成器抽象类

abstract class PizzaBuilder {

protected Pizza pizza;

public Pizza getPizza() { return pizza; }

public void createNewPizzaProduct() { pizza = new Pizza(); }

public abstract void buildDough();

public abstract void buildSauce();

public abstract void buildTopping();

}

//具体的pizza生成器类

class HawaiianPizzaBuilder extends PizzaBuilder {

public void buildDough() { pizza.setDough("cross"); }

public void buildSauce() { pizza.setSauce("mild"); }

public void buildTopping() { pizza.setTopping("ham+pineapple"); }

}

class SpicyPizzaBuilder extends PizzaBuilder {

public void buildDough() { pizza.setDough("pan baked"); }

public void buildSauce() { pizza.setSauce("hot"); }

public void buildTopping() { pizza.setTopping("pepperoni+salami"); }

}

//创建pizza

class Waiter {

private PizzaBuilder pizzaBuilder;

public void setPizzaBuilder (PizzaBuilder pb) { pizzaBuilder = pb; }

public Pizza getPizza() { return pizzaBuilder.getPizza(); }

public void constructPizza() {

pizzaBuilder.createNewPizzaProduct();

pizzaBuilder.buildDough();

pizzaBuilder.buildSauce();

pizzaBuilder.buildTopping();

}

}

//创建实例

class BuilderExample {

public static void main(String[] args) {

Waiter waiter = new Waiter();

PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder();

PizzaBuilder spicy_pizzabuilder = new SpicyPizzaBuilder();

waiter.setPizzaBuilder ( hawaiian_pizzabuilder );

waiter.constructPizza();

Pizza pizza = waiter.getPizza();

}

}

但是Android中的Builder则作为了AlertDialog的一个内部类用来对于AlertDialog的一些属性的设置,然后通过内部类创建一个实例出来,这样一来,所起的作用也就是仅在于将属性设置部分置于一个结构包起来,方便后期的维护。

至此设计模式中较为常用的模式讲解学习心得分享结束,接下来开始展开JVM的系列文章,同时也会补充一些平时遇到的一些其它的设计模式等相关的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值