• IoC和AoP


    1.反向控制 IoC(Inversion of Control):就是将对象的创建和获取提取到外部。由外部容器提供需要的组件。

    其中组件分为两部分:1.Service,所提供功能的声明;2.Implementation,Service的实现;

    优点:多实现可以任意切换,防止具体依赖具体;

    Framework:Framework是为服务器端解决方案设计的
    1).  一个支持性的或封闭性的结构;2).  包含思想的一个基本系统或一种安排

    框架:

    1).垂直市场框架:同样的框架不能胜任其它行业;

    2).水平市场框架:可用于多个行业的框架;

    Avalon是一个水平市场框架。您可以使用Avalon的Framework构建垂直市场框架

    Java已经有了一个构建GUI的框架,称为Swing

    如果项目将来运行在一个服务器环境中,那么Avalon是OK的,无论是用来创建一个java servlet还是一个特殊用途的服务器应用;但是并不适合一个将来运行在客户机上并且与服务器没有交互的项目;

    2.原理:反向控制and分离考虑

    1).反向控制(Inversion of Control):IOC指组件总是由外部进行管理,组件所需的一切通过Contexts、Configurations和Loggers的方式赋予组件。实际上,组件生命周期中的每个阶段都是由创建组件的代码所控制的。当开始使用这种模式时,就实现了一种组件与自己的系统安全交互的方法。IOC不等价于安全性,IOC只是实现安全性的工具;

    做到安全:每个组件都必须安全,没有组件可以修改传递给它们的对象的内容,而且所有的交互都必须使用已知的实体。

    2).分离考虑(Separation of Concerns):SOC即应该从不同的思考方向看待自己的系统。

    。分离考虑模式又导致了Aspect Oriented Programming (AOP)

    2.。面向方面编程:Aspect Oriented Programming (AOP)

    研究者发现许多考虑不能在类或方法的粒度上进行处理。这些考虑被称为aspect。aspect的例子包括管理对象的生命周期、记日志、处理异常和清理释放资源等。由于没有一种稳定的AOP实现,Avalon开发团队选择通过提供一些小的接口,然后由组件来实现,从而实现aspect或考虑。

    1).面向组件的编程(Component Oriented Programming ,COP):cop是把系统分割成一些组件或设施的一种思想。每种设施都有一个工作接口和围绕该接口的契约。这种方式允许容易地更换组件的实例,同时不影响系统其它部分的代码。

    好处:COP的主要好处之一是修改项目代码的一些部分不会破坏整个系统。另一个好处是可以有某组件的多种实现,并可以在运行时刻进行选择。

    与oop差异:面向对象编程(Object Oriented Programming ,OOP)和COP的主要区别在于集成的层次。COP系统的复杂性更容易管理,这得益于类之间更少的相互依赖。这提高了代码重用的程度。

    2).面向服务的编程(Service Oriented Programming ,SOP):sop的思想是把系统划分为由系统提供的一些服务

    比如这些服务:1.  为其它人执行的工作或职责 ;2.  提供修理或维护的一种设施 ;3.  向公众提供工具的一种设施;

    把每一种要提供的设施看作是一项服务,由特定接口和相关契约组成。服务的实现被称为Block。一个服务器程序是由多种服务组成的,认识这一点很重要。比如:以邮件服务器为例,它会有协议处理服务、认证和授权服务、管理服务和核心邮件处理服务等

    从实践经验上来说,一个定义良好的面向消息的系统在可扩展性方面要强于面向对象的系统(如EJB)。可扩展性更好的一个原因是消息通常并发内存开销较小。另一个原因是它更容易把消息处理的负载分散到所有服务器上去,而不是把所有的处理集中在少量的服务器集群上(甚至是在一台服务器上)。

    把组件视为一个服务或设施的模型,而不是数据的模型

    如果一个潜在组件的逻辑将被一致地应用,那么将它作为一个组件可能是有意义的。

    在一个系统中可以有一个组件的多个实例,它们可以在运行时进行选择。

    如果潜在组件的逻辑只是根据另外一个组件来确定的,也许可以把这些逻辑放到另外的那个组件中去。

    Cache是一个短期内存中的存储设施。DocumentRepository将用它来保存Document对象,并通过一个散列算法来引用。为了提高Cache组件的可重用性,存储的对象必须实现一个Cacheable接口。

  • 相关阅读:
    Socket网络编程--简单Web服务器(4)
    GCC学习笔记
    字符分隔符'1'(u0001)的困惑
    g++编译时遇到问题undefined reference to
    ROS学习笔记(三)
    cJSON笔记
    ROS学习笔记(二)
    ROS学习笔记(一)
    ffmpeg推流方式采用TCP协议
    Android OS的image文件组成
  • 原文地址:https://www.cnblogs.com/blovej/p/7081514.html
Copyright © 2020-2023  润新知