场景

商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?



这个场景中有两个变化的维度:电脑类型、电脑品牌



桥接模式核心要点

处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。




品牌维度

品牌接口:IBrand.java

package 设计模式.桥接模式.品牌维度;

/**
* 品牌接口
*
* @author 陈霓清
*/
public interface IBrand {
void sale();
}


品牌实现类

Lenovo.java

package 设计模式.桥接模式.品牌维度;

/**
* 联想
*
* @author 陈霓清
*/
public class Lenovo implements IBrand {

@Override
public void sale() {
System.out.println("销售联想电脑");
}

}


Dell.java

package 设计模式.桥接模式.品牌维度;

/**
* 戴尔
*
* @author 陈霓清
*/
public class Dell implements IBrand {

@Override
public void sale() {
System.out.println("销售戴尔电脑");
}

}


电脑类型维度

父类:Computer.java

package 设计模式.桥接模式.电脑类型维度;

import 设计模式.桥接模式.品牌维度.IBrand;

/**
* 电脑类型的维度
*
* @author 陈霓清
*/
public class Computer {

protected IBrand brand;

public Computer(IBrand brand) {
this.brand = brand;
}

public void sale(){
brand.sale();
}

}


子类:台式机  Desktop.java

package 设计模式.桥接模式.电脑类型维度;

import 设计模式.桥接模式.品牌维度.IBrand;

/**
* 台式机
*
* @author 陈霓清
*/
public class Desktop extends Computer {

public Desktop(IBrand brand) {
super(brand);
}

@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}


子类:笔记本电脑    Laptop.java

package 设计模式.桥接模式.电脑类型维度;

import 设计模式.桥接模式.品牌维度.IBrand;

/**
* 笔记本电脑
*
* @author 陈霓清
*/
public class Laptop extends Computer {

public Laptop(IBrand brand) {
super(brand);
}

@Override
public void sale() {
super.sale();
System.out.println("销售笔记本");
}
}


客户端调用

package 设计模式.桥接模式;

import 设计模式.桥接模式.品牌维度.Dell;
import 设计模式.桥接模式.品牌维度.Lenovo;
import 设计模式.桥接模式.电脑类型维度.Computer;
import 设计模式.桥接模式.电脑类型维度.Desktop;
import 设计模式.桥接模式.电脑类型维度.Laptop;

public class Client {

public static void main(String[] args) {
// 销售联想的笔记本电脑
Computer c1 = new Laptop(new Lenovo());
c1.sale();

// 销售戴尔的台式机
Computer c2 = new Desktop(new Dell());
c2.sale();

}
}



回到顶部