zoukankan      html  css  js  c++  java
  • 合成聚合原则

    一、定义

    合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的

    概括:要尽量使用合成/聚合,尽量不要使用继承。

    二、为什么要合成聚合:

    1)在面向对象设计中,可以通过两种基本方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承。
    继承复用:实现简单,易于扩展。破坏系统的封装性;从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;只能在有限的环境中使用。(“白箱”复用)
    组合/聚合复用:耦合度相对较低,选择性地调用成员对象的操作;可以在运行时动态进行。(“黑箱”复用)
    2)组合/聚合可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合/聚合来实现复用;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用。
    3)此原则和里氏代换原则氏相辅相成的,两者都是具体实现"开-闭"原则的规范。违反这一原则,就无法实现"开-闭"原则

    三、什么是聚合和合成

    1.合成(组合):表示一个整体与部分的关系,指一个依托整体而存在的关系(整体与部分不可以分开)

    public class Head
    {
    private Mouth mouth;
    public Head() {
    mouth = new Mouth();
    }
    }
    public class Mouth
    {
    }
    

    2.聚合:聚合是比合成关系更弱的一种拥有关系,也表示整体与部分的关系(整体与部分可以分开)


    public class Car  
    {  
        private Engine engine;  
        public Car(Engine engine) {  
            this.engine = engine;  
        }  
        public void setEngine(Engine engine) {  
            this.engine = engine;  
        }  
    }  
    public class Engine  
    {  
    

      参考:https://blog.csdn.net/liaoqianchuan00/article/details/8230459

      https://www.cnblogs.com/harvey2017/p/9948878.html

    http://www.360doc.com/content/12/0315/16/7909375_194586566.shtml

     

  • 相关阅读:
    算法复习——扫描线(hdu1542)
    hbase简单操作
    python操作Mongo数据库
    查看图片大小
    python修改图片格式
    python图片压缩
    python 图片抓取
    failed to lazily initialize a collection of role: could not initialize proxy
    failed to lazily initialize a collection of role: could not initialize proxy
    vim自动打开跳到上次的光标位置
  • 原文地址:https://www.cnblogs.com/LiaoMengyu/p/12541806.html
Copyright © 2011-2022 走看看