您的位置:首页 > 编程语言 > Go语言

GOF23的一些总结(八)

2016-12-30 16:57 274 查看
桥接模式出现要解决的问题:

这是一个扩展起来很麻烦的类?下面是使用单继承,多重继承实现多维度功能的



-扩展性问题(类个数膨胀问题):

如果要增加一个新的电脑类型:智能手机,则要增加各个品牌下面的类。

如果要新增加一个品牌:也要增加各种电脑类型的类。

-违反单一职责原则:

一个类,有两个原因,引起这个类的变化。

桥接模式适用场景



下面是类图



电脑接口和类的代码

package com.dasenlin.cn;
/**
* 电脑类,调用品牌具有的功能
* @author Administrator
*
*/
public class Computer {

protected Brand brand;

public Computer(Brand brand) {
super();
this.brand = brand;
}

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

}

class Desktop extends Computer{

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

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

}

class Laptop extends Computer{

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

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

}


品牌接口和类关系的代码

package com.dasenlin.cn;
/**
* 品牌维度的接口
* @author Administrator
*
*/
public interface Brand {
void sale();
}
class Lenovo implements Brand{

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

}
class Dell implements Brand{

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

}


测试类

package com.dasenlin.cn;
/**
* 测试运行
* @author Administrator
*
*/
public class Client {

public static void main(String[] args) {
Computer comp = new Laptop(new Lenovo());
comp.sale();

Computer com = new Desktop(new Dell());
com.sale();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息