创建者模式深入分析

创建者模式简单实现

创建者模式坦克大战实现 (c++)

创建者模式坦克大战实现 java

创建者模式深入分析(最好已经阅读过以上文章)
一。本文达到两目的
1.知道创建者模式有什么特点
2.能在代码中找到该模式
二。创建者模式的3个重要角色
1.创建者(Builder)
2.导演(Director)
3.产品(Product)
4.用户(Client)
产品不用说了,就是个产出物,用户吗就是调用,其他两个才是主角
1.导演要求,创建者,我把产品交给你,你要按照1,2,3...的步骤去加工,具体加工怎么样你说的算。但必须按照我的要求提供接口
2.创建者,就是按照导演的要求,实现各接口,对产品进行加工
这里在强调一下价值,就是用户可以选择创建者,交给导演,这就是该模式的价值

三。下面分别举3中情况说明,如下3中情况都叫创建者,大家从抽象模型的角度理解该模式。
如果任何代码中能与如下模型对应上,那就叫创建者模式。
引:我再刚开始学模式的时候,不知识什么才算是模式,因为对该模式实现的用例有各种情况。
而从标准的类图中,也不能确定接口和参数的具体关系。
1.由导演(Director)创建产品(Product)

class Product{
	
}
class Builder{
	public void create1(Product p) {
		
	}
	public void create2(Product p) {
		
	}
}
class Director{
	public Builder mBuilder;
	Product construct() {
		Product p = new Product();
		mBuilder.create1(p);
		mBuilder.create2(p);
		return p;
	}
}
public class Client {
	public static void main(String[] args) {
		System.out.println("hello worldff !");
		Director d = new Director();
		d.mBuilder = new Builder();
		Product p = d.construct();
	}
}


2.由创建者(Builder)创建产品(Product)

class Product{
	
}
class Builder{
	Product mProduct;
	public Builder() {
		mProduct = new Product();
	}
	public void create1() {
		
	}
	public void create2() {
		
	}
	Product getProduct() {
		return mProduct;
	}
}
class Director{
	public Builder mBuilder;
	Product construct() {
		mBuilder.create1();
		mBuilder.create2();
		return mBuilder.getProduct();
	}
}
public class Client {
	public static void main(String[] args) {
		System.out.println("hello worldff !");
		Director d = new Director();
		d.mBuilder = new Builder();
		Product p = d.construct();
	}
}


3.由用户(Client)创建产品(Product)

class Product{
	
}
class Builder{
	public void create1(Product p) {
		
	}
	public void create2(Product p) {
		
	}
}
class Director{
	public Builder mBuilder;
	public void construct(Product p) {	
		mBuilder.create1(p);
		mBuilder.create2(p);
	}
}
public class Client {
	public static void main(String[] args) {
		System.out.println("hello worldff !");
		Product p = new Product();
		Director d = new Director();
		d.mBuilder = new Builder();
		d.construct(p);
	}
}

四。总结

上面的举例,大家一定要注意一点,创建者是可多态的,这里主要为了体现参数传递的几种情况,所以没有定义多态。
还有,看完上面的举例,有些人会想,不就是换“new Product”的地方吗?
能不能把“new Builder”的地方也调整一下呢?
是的,上面的几种情况其实就是换了“new Product”的位置,
但是“new Builder”的位置也调整一下呢,答案是不能。
因为该模式的价值就是,用户可以通过换不同的Builder,达到创建不同产品的目的。
所以选择Builder的权利一定要留给用户(Client)

五。补充说明
说明叫做创建者模式呢(用对象和关系两个维度进行说明)
A.构成:首先,由如下几种角色构成
1.创建者(Builder)
2.导演(Director)
3.产品(Product)
4.用户(Client)
B.关系
1.创建者提供创建产品的步骤
2.导演调用创建者的步骤
3.用户选择创建者给导演

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/88717475