网站界面设计描述,做视频网站要多大的服务器,营销推广的形式包括,用凡科做网站好弄吗一#xff0c;定义
Builder模式是一步一步创建一个复杂对象的创建型模式#xff0c;它允许用户在不知道内部构建细节的情况下#xff0c;可以更精细的控制对象的构造流程。
也就是将一个对象的构建与它的表示分离#xff0c;使得同样的构建过程可以创建不同的表示。
二定义
Builder模式是一步一步创建一个复杂对象的创建型模式它允许用户在不知道内部构建细节的情况下可以更精细的控制对象的构造流程。
也就是将一个对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。
二使用场景
1相同的方法不同的执行顺序产生不同的事件结果时
2多个部件或零件都可以装配到一个对象中但是产生的运行结果又不相同时
3产品类非常复杂或者产品类中的调用顺序不同产生了不同的作用这个时候使用Builder模式非常合适
4当初始化一个对象特别复杂如参数多且很多参数都具有默认值时
三使用Builder模式
假如我们有一个视频播放器这个播放器初始化的时候可以设置默认图视频标题视频链接。
那我们使用Builder模式如下
新建一个接口定义视频播放器的功能
public interface IVideoView {/*** 设置视频标题* */void setTitle(String title);/*** 设置视频封面* */void setImage(String img);/*** 设置视频链接* */void setUrl(String url);
}
新建一个播放器实现接口内部定义一个Builder静态内部类用来构建播放器
/*** 视频播放器* */
public class VideoView implements IVideoView{private static final String TAG VideoView;private String title;private String img;private String url;public VideoView(Builder builder) {this.title builder.title;this.img builder.img;this.url builder.url;}Overridepublic void setTitle(String title) {Log.d(TAG,title:title);}Overridepublic void setImage(String img) {Log.d(TAG,img:img);}Overridepublic void setUrl(String url) {Log.d(TAG,url:url);}public static class Builder{private String title;private String img;private String url;public Builder setTitle(String title) {this.title title;return this;}public Builder setImage(String img) {this.img img;return this;}public Builder setUrl(String url) {this.url url;return this;}public VideoView bulid(){return new VideoView(this);}}
}
那么在使用的时候就可以实现链式调用了
VideoView videoView new VideoView.Builder().setImage(http://dxxx/ddsd.jpg).setTitle(视频).setUrl(http://sdsdsds.mp4).bulid();
这样就可以优雅的使用链式调用去创建我们的对象了。
四安卓中的使用案例
AlertDialog:
AlertDialog.Builder builder new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher_background).setMessage(title).create().show();
五总结
优点
1封装性好使用Builder模式可以使客户端不必知道产品内部组成的细节
2建造者独立容易扩展
缺点
会产生多余的Builder对象消耗内存