建造者模式 指挥者的作用
来源:互联网 发布:java获取图片的宽和高 编辑:程序博客网 时间:2024/05/05 12:25
建造者模式的表述:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。
用了建造者模式,用户只需指定需要建造的类型就可以得到它们,而具体的过程和细节就不需要知道了。
而建造者中的一个非常重要的类就是指挥者类,它用来控制建造过程,也用它来隔离用户与建造过程的关联。
指挥者类是建造模式的核心和灵魂所在,主要完成同样的构建过程可以创建不同的表示。从上面的例子可以看到,如果缺少指挥者类,那么就不能算是建造者模式了,只能说是定义了一个接口或抽象类,规定了必须实现哪些功能罢了。指挥者类,不仅指出了对象的建造顺序,还把用户与建造过程分离,并为可能发生的变化提供了一个灵活的处理方法,使建造顺序的改变或需求的改变不会引起大的改动也不会改变程序的结构。
创建者例子:
static void Main(string[] args)
{
PersonBuilder fatPerson = new FatPerson();
directorA dr = new directorA(fatPerson);
Person p = fatPerson.GetResult();
p.Show();
Console.Read();
}
{
PersonBuilder fatPerson = new FatPerson();
directorA dr = new directorA(fatPerson);
Person p = fatPerson.GetResult();
p.Show();
Console.Read();
}
//建造者模式
//要被创建的对象
public class Person
{
List<string> parts = new List<string>();
public void Add(string part)
{
parts.Add(part);
}
public void Show()
{
parts.ForEach(str=>Console.WriteLine(str));
}
}
/// <summary>
/// 小人创建者
/// </summary>
public abstract class PersonBuilder
{
public abstract void builderHeader(); //创建头
public abstract void builderHand(); //创建手
{
parts.ForEach(str=>Console.WriteLine(str));
}
}
/// <summary>
/// 小人创建者
/// </summary>
public abstract class PersonBuilder
{
public abstract void builderHeader(); //创建头
public abstract void builderHand(); //创建手
public abstract Person GetResult();
}
}
/// <summary>
/// 胖小人,完成具体的创建细节
/// </summary>
public class FatPerson : PersonBuilder
{
Person per = new Person();
public override void builderHeader()
{
per.Add("创建胖人的胖头!");
}
/// 胖小人,完成具体的创建细节
/// </summary>
public class FatPerson : PersonBuilder
{
Person per = new Person();
public override void builderHeader()
{
per.Add("创建胖人的胖头!");
}
public override void builderHand()
{
per.Add("创建胖人的大手!");
}
{
per.Add("创建胖人的大手!");
}
public override Person GetResult()
{
return per;
}
}
{
return per;
}
}
/// <summary>
/// 瘦小人,完成具体的创建细节
/// </summary>
public class ThinPerson : PersonBuilder
{
Person per = new Person();
public override void builderHeader()
{
per.Add("创建瘦人的小头!");
}
/// 瘦小人,完成具体的创建细节
/// </summary>
public class ThinPerson : PersonBuilder
{
Person per = new Person();
public override void builderHeader()
{
per.Add("创建瘦人的小头!");
}
public override void builderHand()
{
per.Add("创建瘦人的小手!");
}
{
per.Add("创建瘦人的小手!");
}
public override Person GetResult()
{
return per;
}
}
{
return per;
}
}
/// <summary>
/// 指挥者,完成对创建顺序的控制,完成创建过程的分离
/// </summary>
public class directorA
{
public directorA(PersonBuilder builder)
{
builder.builderHand();
builder.builderHeader();
}
}
/// 指挥者,完成对创建顺序的控制,完成创建过程的分离
/// </summary>
public class directorA
{
public directorA(PersonBuilder builder)
{
builder.builderHand();
builder.builderHeader();
}
}
0 0
- 建造者模式 指挥者的作用
- 建造者模式中指挥者类的作用
- 大话设计模式之建造者模式(生成器模式) 建造队与指挥者的纠缠
- C++设计模式——建造者模式(一般模式,省略指挥者、引入钩子)
- 建造者模式的设计
- 建造者模式的实现
- Java建造者模式,Android建造者模式的AlertDialog
- java的设计模式 建造者模式
- 【有毒的设计模式】建造者模式
- Android的设计模式-建造者模式
- 建造者模式的简单例子
- 建造者模式的个人理解
- 建造者模式的解读与思考
- 对建造者模式的理解
- 建造者模式的简写方式分析
- 建造者模式的多层次理解
- 建造者模式的C#实现
- 对建造者模式的总结
- MySQL的information_schema的介绍
- 手把手教你配置第一个简单log4j实例
- AIX安装ssh
- Nginx 图片 js文件缓存配置方法
- Linux系统安装php开发环境
- 建造者模式 指挥者的作用
- PostgreSQL 性能测试工具
- 最新服务器安全防护批量管理
- 深入理解Linux内核-第七章 进程调度 http://blog.csdn.net/sailor_8318/article/details/2460177
- 如何用JAVA获取GOOGLE 地图经纬度,地址信息
- mysql 区间锁
- Sql Server常用功能
- Linux下MongoDB安装及使用
- 调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界