5. Bridge模式

场景

小王的team最近收到了一个新的需求,设计一个机器学习探测网络攻击的框架。机器学习包括随机森林,聚类,关联规则,SVM,线性回归;网络攻击包括XSS,SQL注入,撞库,爬虫,CC攻击,扫描。

小王想了想,有两个方法:

  1. 做一个基本探测类,所有的机器学习方法类都继承这个基类,所有的攻击探测类都继承了机器学习类,这样每个代码都可以得到复用。
  2. 做一个基本探测类,所有机器学习方法都独立成类,所有网络攻击都独立成类。这样每次要用的时候,每个基本探测对象都包含一个机器学习方法对象和一个网络攻击对象。

而这里有两个原则:

  1. 找出变化并封装。
  2. 优先使用对象聚集而不是类继承。

总结

意图:将一组实现和另一组使用它的对象分离。
问题:一个抽象类的派生类必须使用多个实现,但不能出现类的数量爆炸性增长。
解决方案:为所有实现定义一个接口,供抽象类的所有派生类使用。
效果:实现与使用实现的对象解耦,提供了可拓展性,客户对象无需操心实现问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 落落是我的一位复读的朋友,刚刚高考结束,跟我说:“希望大学不会这么孤独。” 我说,什么算孤独呢? 她说,复读的一年...
    黎饭饭阅读 356评论 2 6
  • 1 李军把大鹏打了,差点闹出了人命。 大鹏喊冤,他跟李军根本不认识,莫名其妙脑袋就被打得几乎开了花。 其实也不算冤...
    冷小茶阅读 1,154评论 1 22