常用设计模式学习

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

代码:

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(适配器)两个身份.

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

public class SquarePeg{ 
  public void insert(String str){ 
    System.out.println("SquarePeg insert():"+str);   } } 
public class RoundPeg{ 
  public void insertIntohole(String msg){ 
    System.out.println("RoundPeg insertIntoHole():"+msg); } }

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

public interface IRoundPeg{ 
  public void insertIntoHole(String msg);  } 
public interface ISquarePeg{ 
  public void insert(String str); }
下面是新的RoundPeg 和SquarePeg, 除了实现接口这一区别,和上面的没什么区别。
public class SquarePeg implements ISquarePeg{   public void insert(String str){ 
    System.out.println("SquarePeg insert():"+str);   } } 
public class RoundPeg implements IRoundPeg{   public void insertIntohole(String msg){ 
    System.out.println("RoundPeg insertIntoHole():"+msg);   } }
下面是新的PegAdapter,叫做two-way adapter:

public class PegAdapter implements IRoundPeg,ISquarePeg{  
  private RoundPeg roundPeg;   private SquarePeg squarePeg;  
  // 构造方法 
  public PegAdapter(RoundPeg peg){this.roundPeg=peg;}   // 构造方法 
  public PegAdapter(SquarePeg peg)(this.squarePeg=peg;) 
  public void insert(String str){ roundPeg.insertIntoHole(str);} }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值