java的这些设计模式都离不开接口与抽象类,果然java里接口和抽象类的掌握是关键啊
这builder模式又得靠接口/抽象类来构建
Briger模式是把对象的属性和行为分隔开来,以至能使2部分都能独立的变化,这个builder模式是为了分离复杂对象里的组件的构建和复杂对象本身的构建过程的模式,这样复杂对象的子组件的构建和复杂对象本身的构建都可以独立的发生变化
其关键是子对象的构建方法被builder委派给了一个接口及其这个接口的实现类,这样子类的构建方法就有了动态性
然后在一个外在的管理类中去调用这个接口对象,手动的去调用子组件的初始化循序,以控制复杂对象本身的构造循序
uml类图
列子
我要构建一个飞船对象 包括一个发动机和雷达 飞船和这2个组件是聚合关系
public class SpaceShip {
private Engine engine;//发动机
private Raid radar;//雷达
public void setEngine(Engine engine) {
this.engine = engine;
}
public void setRaid(Raid raid) {
this.raid = raid;
}
}
构造实现雷达和发动机方法的接口还有一个得到整船的方法
public interface Builder {
void buildEngine();
void buildRaid();
SpaceShip getShip();
}
实现builder的子类
public class BuilderImpl implements Builder {
private SpaceShip ship;
public void buildEngine() {
ship.setEngine(new Engine());
}
public void buildRaid() {
ship.setRadar(new Raid());
}
public SpaceShip getShip() {
// TODO Auto-generated method stub
return this.ship;
}
}
一个负责子部件构造循序的管理类
public class Director {
public Director(Builder builder){
builder.buildEngine();
builder.buildRaid();
}
}
外部调用
Builder builder = new BuilderImpl();//组件构建实现者
Director d = new Director(builder);//组装执行者
SpaceShip ship = builder.getShip();//获得整船
这样我们在构造ship对象的时候不可以不管子组件是如何构建的拉,而且我们可以根据需要对子组件的构造方法动态的进行修改 只要让builder接口指向不同的实现对象就行了
分享到:
相关推荐
adapter bridge build chainOfResp command decorator factory iterator mediator observer proxy state visitor 设计模式,java实现,如有纰漏请指正,谢谢
本示例"Bundle_bundle.zip"旨在演示如何处理包含两种不同加载模式的Sprite Atlas:Include in Build模式和非Include in Build模式。 1. **Include in Build模式**: 在Unity中,当一个Sprite Atlas设置为"Include ...
直观上判断如果是development build模式打包出来的安装包,在游戏的画面的右下角会有development build的水印,且在切换场景也不会消失
在Android开发过程中,`BuildConfig.DEBUG` 是一个非常重要的常量,它用于判断当前应用是否处于调试模式。这个常量的值在构建过程中由Gradle自动生成,通常在开发阶段,`BuildConfig.DEBUG` 应该返回 `true`,以便...
### Windows 10 Build 10130 引入夜间模式 #### 一、概述 随着技术的进步和用户需求的变化,操作系统也在不断地迭代更新,以满足用户对更高效、更舒适的操作体验的需求。其中,夜间模式作为一种重要的用户体验优化...
3. **支持新的API和语言特性**:随着Android系统版本的更新,Build Tools也会随之支持新的API级别和编程语言特性,如Lollipop(Android 5.0)引入的Material Design和多窗口模式等。 4. **错误检查和警告提升**:新...
3. **使用兼容模式**:部分较新的MSBuild版本可能可以兼容旧的项目格式,通过设置兼容标志或者使用特定命令行参数来使新版本MSBuild能够处理旧版项目文件。 4. **使用第三方工具或脚本**:有些第三方工具如GYP...
【build-tools 24.0.3-windows】是Android开发中的一个重要组件,它属于Android SDK Build Tools的一部分。这个版本的Build Tools专为Windows操作系统设计,提供了构建Android应用程序所需的工具集合。在Android应用...
在debug模式下构建项目,并启用断言功能,可以帮助分析器排除不可达代码路径,显著降低误报率。通过`-v`参数调节冗余输出,甚至将其重定向至日志文件,有助于生成详尽的分析记录,为后续的缺陷追踪提供依据。 #### ...
### Windows 10 Build 10147:Edge 浏览器新增暗色显示模式及多项改进 随着正式版 Windows 10 发布日期的临近,越来越多的新特性被逐步披露出来。最近泄露的 Build 10147 版本中,最为引人注目的便是 Edge 浏览器...
在发布模式下,ProGuard默认启用。 - **zipalign**:此工具用于对APK进行最后一步的优化,确保所有文件在存储时都对齐到4字节边界,以提高设备的内存访问性能。 **2. 安装与使用** 要使用Build-tools 20.0.0,...
安卓 Build.prop 参数详解 Build.prop 文件是 Android 系统中一个核心文件,负责定义系统初始的一些参数属性、功能的开放等。通过调整/增加参数可以达到较调系统性能偏重点和附加功能开启的作用。本文将对 Build....
- **Doze模式**:为了提升电池续航,系统在设备长时间未使用时会进入深度睡眠状态。 - **App Links**:允许应用声明对特定URL的归属,以便直接打开相应的应用,而不是浏览器。 - **指纹识别API**:提供了API让应用...
使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: java 没有self,为了子类能返回正确的类型【即类型为Build的子类】 * */ abstract static...
FortiGate 100D 防火墙 FortiOS v6.2.0,build0866 固件 FortiOS 6.2第一个版本
5. **进入刷机模式**:根据设备的不同,可能需要进入恢复模式(如Android的ClockworkMod Recovery或TeamWin Recovery Project)或下载模式。 6. **清除数据和缓存**:在刷机前,一般需要清除设备的分区数据和缓存,...
在本案例中,我们讨论的是微软提供的ISCSI客户端软件——"Initiator-2.08-build3825-x86fre"。这个软件是用于x86架构计算机的,即32位系统,版本号为2.08-build3825。 ISCSI发起器(Initiator)是ISCSI技术的关键...
2. **热模块替换**(Hot Module Replacement):在开发模式下,Bobril Build 可以实现在不刷新整个页面的情况下更新模块,提升开发效率。 3. **自动编译**:Bobril Build 集成了Babel等编译工具,能够将现代...
5. **开发模式**:使用`qp-build dev`启动开发服务器,实现热重载和实时编译。 ### 三、qp-build与其他构建工具对比 qp-build 相较于其他常见的前端构建工具如Webpack、Gulp、Grunt,可能有以下特点: 1. **轻量...
3、多用户模式手动切换,可启动/关闭新留言本申请模式。4、新注册模式手动切换,可启动/关闭新用户注册,以开放/保护留言本。5、自由留言模式手动切换,可启动/关闭用户不用密码发言功能,也可强制必须使用密码发言...