1、组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推。
2、所谓组合模式,其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,我认为这种组合是区别于继承的,而另一层含义是指树形结构子节点的抽象(将叶子节点与数枝节点抽象为子节点),区别于普通的分别定义叶子节点与数枝节点的方式。
更多内容请查看:Java 设计模式之组合模式及应用场景
过滤模式的实现在java8里面有典型的应用方法就是分组操作,可以根据指定的指标进行分组筛选。
Map<Integer, List<Person >> groupMap = persons.stream().collect(Collectors.groupingBy(Person::getGender)); groupMap.forEach((k, v) -> { System.out.println(k); v.forEach(System.out::println); });
得到的结果形式就是:
可以这样想:猪八戒投胎,灵魂在河的一边,河对面有两个肉体,红猪和绿猪;
灵魂需要过桥,选择红猪的肉体或者绿猪的肉体完成投胎。
在上面的例子中,红猪和绿猪就是 RedCircle 和 GreenCircle,灵魂是 Circle 类,而那座桥就是 drawAPI 这个接口。
桥接模式中,具体的实现类放在作为“桥梁”的接口中实现,而“桥梁”接口中只有实现功能的抽象方法;具体实现类是继承“桥梁”,而不直接继承实现类的抽象类,抽象类与具体的实现类在结构上是相互独立的,两者的相互变化并不会影响到彼此,只要“桥梁”没变,两者的变化并不会影响到彼此。
就以上教程的实例程序来说,具体的实现是RedCircle、GreenCircle,它们的抽象类为Shape,按一般逻辑来说,我们是直接继承Shape来创建不同的具体对象,但桥接模式中是通过“桥梁”DrawAPI建立抽象与具体实现之间的联系,调用DrawAPI中的方法来具体实现。
桥接模式:Bridge Pattern
将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》
将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接。—— 《图解设计模式》
类的功能层次结构:父类具有基本功能,在子类中增加新的功能;
类的实现层次结构:父类通过声明抽象方法来定义接口,子类通过实现具体方法来实现接口;
桥接模式中有四个角色:
抽象化角色:使用实现者角色提供的接口来定义基本功能接口。
持有实现者角色,并在功能接口中委托给它,起到搭建桥梁的作用;
注意,抽象化角色并不是指它就是一个抽象类,而是指抽象了实现。
改善后的抽象化角色:作为抽象化角色的子类,增加新的功能,也就是增加新的接口(方法);与其构成类的功能层次结构;
实现者角色:提供了用于抽象化角色的接口;它是一个抽象类或者接口。
具体的实现者角色:作为实现者角色的子类,通过实现具体方法来实现接口;与其构成类的实现层次结构。
如果抽象和实现两者做不到独立地变化,就不算桥接模式。
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2258组合模式
1、组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推。
2、所谓组合模式,其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,我认为这种组合是区别于继承的,而另一层含义是指树形结构子节点的抽象(将叶子节点与数枝节点抽象为子节点),区别于普通的分别定义叶子节点与数枝节点的方式。
更多内容请查看:Java 设计模式之组合模式及应用场景
2257过滤器模式
过滤模式的实现在java8里面有典型的应用方法就是分组操作,可以根据指定的指标进行分组筛选。
得到的结果形式就是:
2256桥接模式
可以这样想:猪八戒投胎,灵魂在河的一边,河对面有两个肉体,红猪和绿猪;
灵魂需要过桥,选择红猪的肉体或者绿猪的肉体完成投胎。
在上面的例子中,红猪和绿猪就是 RedCircle 和 GreenCircle,灵魂是 Circle 类,而那座桥就是 drawAPI 这个接口。
2255桥接模式
桥接模式中,具体的实现类放在作为“桥梁”的接口中实现,而“桥梁”接口中只有实现功能的抽象方法;具体实现类是继承“桥梁”,而不直接继承实现类的抽象类,抽象类与具体的实现类在结构上是相互独立的,两者的相互变化并不会影响到彼此,只要“桥梁”没变,两者的变化并不会影响到彼此。
就以上教程的实例程序来说,具体的实现是RedCircle、GreenCircle,它们的抽象类为Shape,按一般逻辑来说,我们是直接继承Shape来创建不同的具体对象,但桥接模式中是通过“桥梁”DrawAPI建立抽象与具体实现之间的联系,调用DrawAPI中的方法来具体实现。
2254桥接模式
桥接模式:Bridge Pattern
将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》
将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接。—— 《图解设计模式》
类的功能层次结构:父类具有基本功能,在子类中增加新的功能;
类的实现层次结构:父类通过声明抽象方法来定义接口,子类通过实现具体方法来实现接口;
桥接模式中有四个角色:
抽象化角色:使用实现者角色提供的接口来定义基本功能接口。
持有实现者角色,并在功能接口中委托给它,起到搭建桥梁的作用;
注意,抽象化角色并不是指它就是一个抽象类,而是指抽象了实现。
改善后的抽象化角色:作为抽象化角色的子类,增加新的功能,也就是增加新的接口(方法);与其构成类的功能层次结构;
实现者角色:提供了用于抽象化角色的接口;它是一个抽象类或者接口。
具体的实现者角色:作为实现者角色的子类,通过实现具体方法来实现接口;与其构成类的实现层次结构。
如果抽象和实现两者做不到独立地变化,就不算桥接模式。