建造者模式
2016-01-28 11:04
337 查看
这篇博客介绍下建造者模式(Builder模式)。
建筑者模式是一种对象创建型模式,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
建造者模式中的角色:
1.Director导演类(负责用不同的build,做相同的行为)
2.Builder抽象接口(定义了建筑的通用行为)
3.Builder建筑者类(建筑内容不相同的实体的行为类,一般有多个)
Entity:
Director:
Builder抽象接口:
Builder的实例:
主程序:
建造者模式应用场景
对象的创建:Builder模式是为对象的创建而设计的模式
创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象
关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法
建筑者模式是一种对象创建型模式,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
建造者模式中的角色:
1.Director导演类(负责用不同的build,做相同的行为)
2.Builder抽象接口(定义了建筑的通用行为)
3.Builder建筑者类(建筑内容不相同的实体的行为类,一般有多个)
Entity:
/* * 这个实体服务于list和detail */ public class News { private int id;//都需要 private String title;//都需要 private String author;//都需要 private String updateTime;//都需要 private String content;//detail需要 private String bigImage;//detail需要 private String smallImage;//list需要 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getUpdateTime() { return updateTime; } public void setUpdateTime(String updateTime) { this.updateTime = updateTime; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getBigImage() { return bigImage; } public void setBigImage(String bigImage) { this.bigImage = bigImage; } public String getSmallImage() { return smallImage; } public void setSmallImage(String smallImage) { this.smallImage = smallImage; } @Override public String toString() { // TODO Auto-generated method stub return id+","+title+","+author+","+updateTime+","+content+","+bigImage+","+smallImage; } }
Director:
public class NewsDirector { public void setNewsBuild(NewsBuild build,String jsonString){ build.makeNews(jsonString); } }
Builder抽象接口:
/* * 制作新闻的接口 */ public interface NewsBuild { public void makeNews(String jsonString); public News getNews(); }
Builder的实例:
public class NewsDetailBuild implements NewsBuild { private News news = new News(); @Override public void makeNews(String jsonString) { // TODO Auto-generated method stub // 从jsonString从获取需要的属性,这边为了方便直接赋值 news.setId(0); news.setTitle("123"); news.setAuthor("lbf"); news.setBigImage("http://big"); news.setUpdateTime("2014-1-1"); news.setContent("xxxxxxxxx"); } @Override public News getNews() { // TODO Auto-generated method stub return news; } } public class NewsListBuild implements NewsBuild { private News news = new News(); @Override public void makeNews(String jsonString) { // TODO Auto-generated method stub //从jsonString从获取需要的属性,这边为了方便直接赋值 news.setId(0); news.setTitle("123"); news.setAuthor("lbf"); news.setSmallImage("http://small"); news.setUpdateTime("2014-1-1"); } @Override public News getNews() { // TODO Auto-generated method stub return news; } }
主程序:
public class MainClass { public static void main(String[] args) { NewsDirector director = new NewsDirector(); NewsBuild listBuild = new NewsListBuild(); NewsBuild detailBuild = new NewsDetailBuild(); director.setNewsBuild(listBuild, "listString"); System.out.println(listBuild.getNews()); System.out.println("-----------------"); director.setNewsBuild(detailBuild, "detailString"); System.out.println(detailBuild.getNews()); } }
建造者模式应用场景
对象的创建:Builder模式是为对象的创建而设计的模式
创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象
关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法
相关文章推荐
- oracle中nvl()函数有什么用啊?
- HDU 2018:母牛的故事
- DES加密的C语言实现
- [Computer and Network Security] Large-Scale Network Attacks
- linux下redmine安装部署
- 你真的了解AsyncTask?
- SqlServer实时数据同步到mysql
- 关于微信的分享功能
- 说明一下JNI 与AIDL
- 0128
- 2.CocoaPods的使用
- Jquery关于CSS选择器
- spring MVC入门
- ubuntu 安装 FirewallD
- AJAX:HttpContext context.Session["XX"]写入时报错
- Android异步处理二:使用AsyncTask异步更新UI界面
- Latex插图和插入表格代码模板
- menu控件 站点地图
- 让UITableView的section header view不悬停,让UITableView的section headerview取消粘性
- each实现原理