桥接模式(别名:柄体模式)
将抽象部分与它的实现部分分离,使得它们都可以独立地变化。
一 、 概述
桥接模式是关于怎样将抽象部分与它的实现部分分离,使得它们都可以独立地变化的成熟模式二、桥接模式的结构与使用
模式的结构中包括四种角色:
1.抽象(Abstraction): ArchitectureCose.java
public abstract class ArchitectureCost{
BuildingDesign design;
double unitPrice;
public abstract double giveCost() ;
}
2.实现者(Implementor) : BuildingDesign.java
public interface BuildingDesign{
public double computerArea();
}
.细化抽象(RefinedAbstraction):BuildingCose.java
public class BuildingCost extends ArchitectureCost{
BuildingCost(BuildingDesigndesign,doubleunitPrice){
this.design=design;
this.unitPrice=unitPrice;
}
public double giveCost() {
double area=design.computerArea();
return area*unitPrice;
}
}
4.具体实现者(Concrete Implementor):HouseDesign.java
public class HouseDesign implements BuildingDesign{
double width,length;
intfloorNumber;
HouseDesign(double width,doublelength,intfloorNumber){
this.width=width;
this.length=length;
this.floorNumber=floorNumber;
}
public double computerArea(){
return width*length*floorNumber;
}
}5.应用 Application.java
public class Application{
public static void main(String args[]) {
double width=63,height=30;
intfloorNumber=8;
double unitPrice=6867.38;
BuildingDesign design=new HouseDesign(width,height,floorNumber);
System.out.println("宽"+width+"米,高"+height+"米,层数为"+floorNumber);
ArchitectureCost cost=new BuildingCost(design,unitPrice);
double price=cost.giveCost();
System.out.printf("每平米造价:"+unitPrice+"元的商业楼的建设成本:%.2f元\n",price);
width=52;
height=28;
floorNumber=6;
unitPrice=2687.88;
design=new HouseDesign(width,height,floorNumber);
System.out.println("宽"+width+"米,高"+height+"米,层数为"+floorNumber);
cost=new BuildingCost(design,unitPrice);
price=cost.giveCost();
System.out.printf("每平米造价:"+unitPrice+"元的住宅楼的建设成本:%.2f元\n",price);
}
}
三、桥接模式的优点