Java设计模式:建造者模式

绪论

其实很早以前就看过一些关于设计模式的文章,知道这个很重要,为此还写了一些demo,但是在实际开发过程中基本没有使用过。原因:不习惯,不记得,其实更多的是不明白什么情况下可以使用。所以导致自己的代码又臭又长,还会重复的造一些轮子,使代码看起来毫无亮点。
这次学习设计模式,更多的是分析理解,思考以往编程中哪些地方可以用到这些模式,从而可以使以后的自己在开发相同模块时可以使用。

理解

  1. 创建型模式。
  2. 构建与表示分离,使得同样的构建过程可以创建不同的表示。
  3. 优点:易于解耦、精确控制对象的创建、易于扩展。
  4. 缺点:产品之间差异性很大不适合使用、产品内部变化复杂,会导致系统变得很庞大。

代码

Builder.java

public interface Builder {
	// 流量
	void flow();
	// 通话时长
	void talkTime();
	// 短信数量
	void messageNum();
	// 价格
	void price();
}

Director.java

public class Director {
	// 组合
	public void combination (Builder builder) {
		builder.talkTime();
		builder.messageNum();
		builder.flow();
		builder.price();
	}
}

SetMealBuilder_A.java

/**
 * A套餐
 */
public class SetMealBuilder_A implements Builder {

	@Override
	public void flow() {
		System.out.println("流量总量:100M");
	}

	@Override
	public void talkTime() {
		System.out.println("通话时长:100分钟");
	}

	@Override
	public void messageNum() {
		System.out.println("短信数量:100条");
	}

	@Override
	public void price() {
		System.out.println("套餐价格:18元\n");
	}
}

SetMealBuilder_B.java

/**
 * B套餐
 */
public class SetMealBuilder_B implements Builder {

	@Override
	public void flow() {
		System.out.println("流量总量:500M");
	}

	@Override
	public void talkTime() {
		System.out.println("通话时长:300分钟");
	}

	@Override
	public void messageNum() {
		System.out.println("短信数量:150条");
	}

	@Override
	public void price() {
		System.out.println("套餐价格:28元\n");
	}
}

Main.java

public class Main {

	public static void main(String[] args) {
		
		System.out.println("------A 套餐------");
		
		SetMealBuilder_A setMeal_A = new SetMealBuilder_A();
		Director director_A = new Director();
		director_A.combination(setMeal_A);
		
		System.out.println("------B 套餐------");
		
		SetMealBuilder_B setMeal_B = new SetMealBuilder_B();
		Director director_B = new Director();
		director_B.combination(setMeal_B);
	}
}

结果

在这里插入图片描述

这个组合模式让我想起了移动的每月套餐,虽然内容种类基本一样,由于通话时长、流量、短信数量等的不同,每个套餐价格不同,但是组合模式是一样的。
还有肯德基的套餐和这都差不多。

(若有什么错误,请留言指正,3Q)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值