Builder模式
来源:互联网 发布:hmcl启动器找不到java 编辑:程序博客网 时间:2024/04/30 07:05
Builder模式是与异步创建一个复杂对象的创建模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构建流程。该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件的表示隔离开来。
使用场景:
1、相同的方法,不同的执行顺序,产生不同的实践结果时。
2、多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。
3、产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常适合。
4、当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值同时。
简单实现:
Computer.java
public abstract class Computer { protected String mBoard; protected String mDisplay; protected String mOS; protected Computer(){ } public void setBoard(String board){ mBoard=board; } public void setDisplay(String display){ mDisplay=display; } public abstract void setOS(); @Override public String toString(){ return "Coputer [mBoard + "+mBoard+", mDisplay="+mDisplay+", mOS="+ mOS+"]"; }}
Builder.java
public abstract class Builder { public abstract void buildBoard(String board); public abstract void buildDisplay(String display); public abstract void buildOS(); public abstract Computer create();}
Macbook.java
public class Macbook extends Computer{ protected Macbook(){ } @Override public void setOS(){ mOS="Mac OS X 10.10"; }}
MacBuilder.java
public class MacbookBuilder extends Builder { private Computer mComputer=new Macbook(); @Override public void buildBoard(String board){ mComputer.setBoard(board); } @Override public void buildDisplay(String display){ mComputer.setDisplay(display); } @Override public void buildOS(){ mComputer.setOS(); } @Override public Computer create(){ return mComputer; }}
Director.java
public class Director { Builder mBuilder=null; /** * @param builder */ public Director(Builder builder){ mBuilder=builder; } /** * Build Object */ public void construct(String board, String display){ mBuilder.buildBoard(board); mBuilder.buildDisplay(display); mBuilder.buildOS(); }}
Test.java
public class Test { public static void main(String[] args){ Builder builder=new MacbookBuilder(); Director pcDirector=new Director(builder); pcDirector.construct("英特尔主板","Retina显示器"); System.out.println("Computer Info: "+builder.create().toString()); }}
运行结果:
0 0
- builder 模式
- Builder模式
- Builder 模式
- Builder模式
- builder模式
- builder模式
- Builder模式
- builder模式
- Builder模式
- Builder 模式
- Builder 模式
- Builder模式
- Builder模式
- builder模式
- builder模式
- builder模式
- Builder模式
- Builder模式
- Linux学习之正则表达式
- 20160512遇见Session.save()方法而产生的疑问
- BZOJ 2301 Problem B(x属于[a,b],y属于[c,d]满足gcd(x,y)=k的(x,y)的有序对数)
- iOS学习- 16 search tableview item - Todo App
- 通过服务器获取终端上应用软件更新数据的方法和系统
- Builder模式
- Java面试题之基础(1)
- 编程规范 --- 可读性
- screen ssh 上边虚拟窗口的运行
- myeclipse启动选择workspace的Launcher框
- 牛腩新闻发布系统
- STM32的时钟配置
- StringTokenizer类的使用
- Android加载大图的优化策略