GOF23的一些总结(八)

来源:互联网 发布:python关键字是什么 编辑:程序博客网 时间:2024/05/29 03:40

桥接模式出现要解决的问题:
这是一个扩展起来很麻烦的类?下面是使用单继承,多重继承实现多维度功能的
这里写图片描述
-扩展性问题(类个数膨胀问题):
如果要增加一个新的电脑类型:智能手机,则要增加各个品牌下面的类。
如果要新增加一个品牌:也要增加各种电脑类型的类。
-违反单一职责原则:
一个类,有两个原因,引起这个类的变化。
桥接模式适用场景
这里写图片描述
下面是类图
这里写图片描述
电脑接口和类的代码

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();    }}
0 0
原创粉丝点击