zoukankan      html  css  js  c++  java
  • java设计模式等相关思想


    设计模式:
    ·java中23中设计模式
    菜鸟教程http://www.runoob.com/design-pattern/design-pattern-tutorial.html
    http://www.cnblogs.com/geek6/p/3951677.html

    ·总体来说设计模式分为三大类:
    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
    其实还有两类:并发型模式和线程池模式。

    创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
    结构型模式:把类或对象结合在一起形成一个更大的结构。
    行为型模式:类和对象如何交互,及划分责任和算法。


    ·六大设计原则
    单一职责:一个类负责一个功能,一旦需求更改,不会受到其他类的影响,但是如果这个功能需求又被细分,会出现更细的划分,只能修改这个类,需要对代码进行重构,防止功能职责的不确定性。

    里氏替换原则 (Liskov Substitution Principle)(是对开-闭原则的补充)
    实现“开-闭”原则的关键步骤就是抽象化,基类与子类的继承关系就是抽象化的具体实现,所以里氏替换原则是对实现抽象化的具体步骤的规范,就是子类可以扩展父类的功能,但不能改变父类原有的功能,尽量不要重写或重载父类方法
    如果非要重写父类的方法,比较通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合,组合等关系代替。

    依赖倒置原则(dependence inversion principle)
    所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段
    通过将高层模块转换为接口形式,一切都需要转化为抽象,不要注重细节的实现,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
    依赖倒置原则的核心思想是面向接口编程

    接口隔离原则(interface segregation principle)
    使用多个隔离的接口,比使用单个接口要好。本意降低类之间的耦合度,而设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。拆分接口,接口中不要有太多方法,否则在实现接口的时候需要将不需要的方法也要实现了,需要为各个类建立专用的接口
    接口隔离原则和单一原则的区别:
    其一,单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建

    迪米特法则(demeter principle)最少知道原则
    一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
    独立性,不会影响到其他模块或者尽可能不影响
    低耦合,高内聚:软件编程原则,该原则是降低类之间的耦合

    开闭原则(open close principle)
    为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,需要面向接口编程
    对扩展开放,对修改关闭,用抽象构建框架,用实现扩展细节

    ·软件开发模式


    ·生产者消费者模式
    https://www.cnblogs.com/chentingk/p/6497107.html
    生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。
    在日益发展的服务类型中,譬如注册用户这种服务,它可能解耦成好几种独立的服务(账号验证,邮箱验证码,手机短信码等)。它们作为消费者,等待用户输入数据,在前台数据提交之后会经过分解并发送到各个服务所在的url,分发的那个角色就相当于生产者。消费者在获取数据时候有可能一次不能处理完,那么它们各自有一个请求队列,那就是内存缓冲区了。做这项工作的框架叫做消息队列。

  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/jacksonlee/p/10244868.html
Copyright © 2011-2022 走看看