一、建造模式:是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

代码:

public interface Builder { 
    void buildPartA();
    void buildPartB();
    void buildPartC();
  
    Product getResult();
  }

//具体建造工具
  public class ConcreteBuilder implements Builder {
    Part partA, partB, partC;

    public void buildPartA() {
      //这里是具体如何构建partA的代码
    };
    public void buildPartB() {
      //这里是具体如何构建partB的代码
    };
     public void buildPartC() {
      //这里是具体如何构建partB的代码
    };
     public Product getResult() {
      //返回最后组装成品结果
    };
  }

//建造者
  public class Director {
    private Builder builder;
  
    public Director( Builder builder ) {
      this.builder = builder;
    }
    public void construct() {
      builder.buildPartA();
      builder.buildPartB();
      builder.buildPartC();
    }
  }


  public interface Product { }
  public interface Part { }
测试代码:

  下面是调用builder的方法:
  ConcreteBuilder builder = new ConcreteBuilder();
  Director director = new Director( builder );
  
  director.construct();
  Product product = builder.getResult();

二、Adapter(适配器模式):
定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.

例如:假设我们要打桩,有两种类:方形桩 圆形桩.

publicclassSquarePeg{
publicvoidinsert(Stringstr){
System.out.println("SquarePeginsert():"+str);}}
publicclassRoundPeg{
publicvoidinsertIntohole(Stringmsg){
System.out.println("RoundPeginsertIntoHole():"+msg);}}

如果我们需要两边继承,即继承SquarePeg 又继承RoundPeg,因为Java中不允许多继承,但是我们可以实现(implements)两个接口(interface)

publicinterfaceIRoundPeg{
publicvoidinsertIntoHole(Stringmsg);}
publicinterfaceISquarePeg{
publicvoidinsert(Stringstr);}
下面是新的RoundPeg 和SquarePeg, 除了实现接口这一区别,和上面的没什么区别。
publicclassSquarePegimplementsISquarePeg{publicvoidinsert(Stringstr){
System.out.println("SquarePeginsert():"+str);}}
publicclassRoundPegimplementsIRoundPeg{publicvoidinsertIntohole(Stringmsg){
System.out.println("RoundPeginsertIntoHole():"+msg);}}
下面是新的PegAdapter,叫做two-way adapter:

publicclassPegAdapterimplementsIRoundPeg,ISquarePeg{
privateRoundPegroundPeg;privateSquarePegsquarePeg;
//构造方法
publicPegAdapter(RoundPegpeg){this.roundPeg=peg;}//构造方法
publicPegAdapter(SquarePegpeg)(this.squarePeg=peg;)
publicvoidinsert(Stringstr){roundPeg.insertIntoHole(str);}}





更多相关文章

  1. java 和 C 代码运行效率的比较(整理)
  2. java中两个事物,怎么设置,能让一个事物出现异常,另一个也回滚?哪位大
  3. Java:IntelliJ想法生成的代码错误地为所有Class名称添加了其包名
  4. 与==两个字符串的Java比较是假的? [重复]
  5. 求一段与读取数据库数据,写入一个数组的javascript 代码!谢谢!!
  6. java动态编译 (java在线执行代码后端实现原理)
  7. leetcode解题之242# Valid Anagram Java版 (判断两个字母串是否具
  8. java SSH员工管理系统以及Demo代码下载
  9. JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的

随机推荐

  1. Activity 组件的启动流程
  2. Android 学习笔记——利用JNI技术在Andro
  3. Android HAL
  4. Android中运行Tensorflow程序2-编写自己
  5. Android Content Providers(二)——Contact
  6. WebView的使用之Android与JS通过WebView
  7. 【Android】背景知识
  8. Android中的shape中的属性大全
  9. gif in android
  10. 【Android】开源项目汇总