建造者模式
来源:互联网 发布:linux查看端口状态 编辑:程序博客网 时间:2024/06/04 23:35
前言
上周没有拉下的这周补回来。
建造者模式
基本结构
phone: 要创建的对象,拥有自己的基本成员变量和方法
public class Phone { private String mCpu; private String mRam; private String mScreen; public void setCpu(String cpu) { mCpu = cpu; System.out.println("使用"+cpu+"处理器"); } public void setRam(String ram) { mRam = ram; System.out.println("拥有"+ram+"内存"); } public void setScreen(String screen) { mScreen = screen; System.out.println("使用"+screen+"屏幕"); }}
builder: 抽象的建造者类,规定创建的条件
public abstract class Builder { public abstract void buildCpu(String cpuName); public abstract void buildScreen(String screenName); public abstract void bulidRam(String ramName); public abstract Phone creatPhone();}
concreteBuilder: 具体的创建类,创建要创建的类的实例,并在对应的方法里传值
public class ConcreteBuilder extends Builder { private Phone mPhone; public ConcreteBuilder(){ mPhone=new Phone(); } @Override public void buildCpu(String cpuName) { mPhone.setCpu(cpuName); } @Override public void buildScreen(String screenName) { mPhone.setScreen(screenName); } @Override public void bulidRam(String ramName) { mPhone.setRam(ramName); } @Override public Phone creatPhone() { return mPhone; }}
director: 指导创建建造者的类,
public class Diretor { private Builder mBuilder; public Diretor(Builder builder){ mBuilder=builder; } public void creatBuilder(String cpu,String screen,String ram){ mBuilder.buildCpu(cpu); mBuilder.buildScreen(screen); mBuilder.bulidRam(ram); mBuilder.creatPhone(); }}
main方法测试:
//建造者模式测试方法 private static void testBuilder(){ ConcreteBuilder concreteBuilder=new ConcreteBuilder(); Diretor diretor=new Diretor(concreteBuilder); diretor.creatBuilder("联发科","大猩猩玻璃","8G"); }
输出结果:
使用联发科处理器使用大猩猩玻璃屏幕拥有8G内存
个人总结
这是标准的建造者模式,在Android中使用的建造者模式是在此基础上改进,更加灵活。
阅读全文
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- 群赛15----2017.9.25
- 第四周-项目二 建立单链表算法库
- rem自适应布局-移动端自适应必备:flexible.js
- Python 赋值、浅拷贝、深拷贝的区别?
- hdu1081 To The Max(最大子矩阵和)
- 建造者模式
- error:本地函数定义是非法的 此行有一个“{”没有匹配项,在注释中遇到意外的文件结束
- 比较重要的运算符
- 第四周-项目3
- 时间复杂度和空间复杂度1
- iOS开发——音频播放 (五):AudioQueue
- 惯性传感器滤波
- DMA
- ucos-iii学习之上下文切换