一般我们会以这种设计方式生产对象实例,如:

创建一个接口:

public interface TestOpen {

    String getVirtualHost();

    String getCapabilities();

    boolean getInsist();

}

实现该接口:

public class TestOpenImpl implements TestOpen {

    private String t1;
private String t2;
private String t3;
public TestOpenImpl()
{ }
public TestOpenImpl(String t1,String t2,String t3)
{
//doSomething...
}
@Override
public String getVirtualHost() {
return null;
} @Override
public String getCapabilities() {
return null;
} @Override
public boolean getInsist() {
return false;
}
}

创建一个构造器:

public class TestOpenBuilder {
public static TestOpen Build()
{
return new TestOpenImpl();
}
public static TestOpen Build(String t1,String t2,String t3)
{
return new TestOpenImpl(t1,t2,t3);
}
}

所以在构造实例对象时,需要:

TestOpenBuilder.Build()或TestOpenBuilder.Build("","","");

如果将构造器封装在interface中,如这样所示:

public interface TestOpen {

    String getVirtualHost();

    String getCapabilities();

    boolean getInsist();

    final class Build
{
private String t1;
private String t2;
private String t3;
public TestOpen.Build t1(String t1){ this.t1=t1;
return this;
}
public TestOpen.Build t2(String t2){ this.t2=t1;
return this;
}
public TestOpen.Build t3(String t3){ this.t3=t3;
return this;
}
public TestOpen build()
{
return new TestOpenImpl(this.t1,this.t2,this.t3);
}
} }

则我们在构造时,可以这样:

TestOpen testOpen = new TestOpen.Build().t1("haha").t2("21").t3("23").build();

这样做的好处:可以将接口与其构建器关联起来,方便使用。

Java编程设计2的更多相关文章

  1. Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码--转载

    在本系列的最后三篇文章中,我展示了如何用 Javassist 框架操作类.这次我将用一种很不同的方法操纵字节码——使用 Apache Byte Code Engineering Library (BC ...

  2. Java界面设计 Swing(1)

    Java界面设计的用途 开发者可以通过Java SE开发丰富并且强大的具有图形界面的桌面应用程序.也可以设计一些提高效率的工具软件,帮助自己处理机械性工作. Java 的图形界面工具包,可以用于工具类 ...

  3. Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  4. JAVA 编程规范(上)

    2016-03-20 J120-CHARLIEPAN JAVA 编程规范(上) 1.      应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JA ...

  5. Java编程中“为了性能”尽量要做到的一些地方

    最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...

  6. JAVA编程“性能说”(java编程需要做的26件事)

    转载于 http://www.csdn.net/article/2012-06-01/2806249 最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过 ...

  7. Java编程思想——初始化与清理

    PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化   虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...

  8. java编程思想-复用类总结

    今天继续读<java 编程思想>,读到了复用类一章,看到总结写的很好,现贴上来,给大家分享. 继承和组合都能从现有类型生成新类型.组合一般是将现有类型作为新类型底层实现的一部分来加以复用, ...

  9. Java 编程入门(词汇表)

    抽象类(abstract class):抽象类不能创建对象,主要用来创建子类.Java中的抽象类使用 abstract 修饰符定义. 抽象数据类型(abstract data type ADT):抽象 ...

随机推荐

  1. SQL多条件查询

    SELECT a.tel,a.business_code,b.name AS business_name,a.register_time FROM T_RED_USER a LEFT JOIN T_P ...

  2. c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常

    #include"stdafx.h" #include"string" #include<iostream> #include<vector& ...

  3. POJ1745Divisibility(01背包思想)

    Divisibility Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11151   Accepted: 3993 Des ...

  4. while循环问题(老师询问问题,学生回答。学生会了可以放学,或者老师讲了10遍,还是没有会的,被迫无奈也要放学。)

    string a=""; ;//声明一个变量,老师重新讲课的次数. && a != "yes") { Console.WriteLine(&qu ...

  5. vagrant 启动错误

    Stderr: VBoxManage.EXE: error: Failed to create the VirtualBox object!VBoxManage.EXE: error: Code E_ ...

  6. WPF 窗体拖转时不触发MouseLeftButtonUpEvent

    解决方案:手动添加Handler,因为e.Handled这个属性是用在路由事件中的,当某个控件得到一个RoutedEvent,就会检测Handled是否为true,为true则忽略该事件. //手动注 ...

  7. Android(Java):jni源代码

    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);      ...

  8. Xcode6中添加pch全局引用文件

    前沿:xcode6中去掉了pch,为了一些琐碎的头文件引用,加快了 编译速度! xcode6添加pch文件方法 1. 右键Supporting File,选择“New File” 2. 选择Other ...

  9. PHP array_intersect() 函数

    PHP Array 函数 定义和用法 array_intersect() 函数返回两个或多个数组的交集数组. 结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变. 注释 ...

  10. PHP正则表达式基础入门

    思维导图 介绍 正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如JavaScript.Java..Net.PHP 等,我今天就把我对正则表达式的理解跟大家唠唠,不当之 ...