• 设计模式(第九式:组合模式)


    概念:
        组合模式:将对象组合成属性结构,以表示“部分——整体“的层次结构,是的用户对单个对象和组合对象的使用具有一致性。

    实现:
        定义一个书架

        public interface Bookshelf {
            /**
            * 书架的一个基本操作,其实也可以不要,这里是为了区分当前累做什么的
            */
            void operation();
    
        }

        定义一个存放书的空间

        public class Bookroom implements Bookshelf {
    
            List<Bookshelf> list = new ArrayList<>();
    
            public void addBookshelf(Bookshelf bookshelf){
                list.add(bookshelf);
            }
    
            public void remove(Bookshelf bookshelf){
                list.remove(bookshelf);
            }
    
            public List<Bookshelf> getChild(){
                return list;
            }
    
            @Override
            public void operation() {
                System.out.println("这是用来存放书的");
            }
        }

        要被存放的书

        public class Book implements Bookshelf{
    
            @Override
            public void operation() {
                System.out.println("你要读这本书么?");
            }
        }

    分析:
        1.其实这个倒不是很难,但是理解起来不是那么直观,可能因为类名会影响思维逻辑,但不影响用文字描述,方便理解:
            a.两个类实现一个共同的接口,目的是为了方便对象造型时统一。
            b.这个接口不一定非需要一个方法,可以没有或者多个
            c.其中一个类中存放了一个接口类型的list,这样就能做出层级感,另一个接口中没有存list,所以就只能是末节点。
        2.其实相当于搞了一个层级结构出来,这样做不利于我们扩展行为,而且对节点的类型也有限制,但却不借助其他规定的情况下解决了层级存储的结构模式。
        3.适用场景:
            a.在做文件系统的时候应该可能会用到
            b.一般如果单纯的传递数据,基本都适用json的格式,所以这个在开发过程中用到的不是很多
            ...

    经典框架中使用的:
        觉得spring中应该是有用到的,具体什么地方没注意过

  • 相关阅读:
    matplotlib-2D绘图库-面向对象
    C 指针
    POCO库中文编程参考指南(8)丰富的Socket编程
    POCO C++ SOCKET
    c++ poco StreamSocket tcpclient测试用例
    用OpenLayers开发地图应用
    Nginx-rtmp模块实现流媒体play、push、pull功能
    使用pjsip传输已经编码的视频,源码在github
    ReSIProcate源码目录下功能说明
    resiprocate使用入门:内网搭建基于repro的sipproxy测试环境
  • 原文地址:https://www.cnblogs.com/ben-mario/p/10717825.html
Copyright © 2020-2023  润新知