Java-设计原则,设计模式

(1)面试对象的常见设计原则
单一职责原则:一个类的功能要单一,方便维护
其实就是开发人员经常说的”高内聚,低耦合” 也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的
原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则。

        开闭原则:一个类中,对修改是封闭的,对扩展是开放的
               核心思想是:一个对象对扩展开放,对修改关闭。 其实开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是修改现有代码。 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证它能一直运行下去,如何能够做到这一点呢?这就需要借助于抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现则是可以改变和扩展的。
               
        里氏替换原则:
               核心思想:在任何父类出现的地方都可以用它的子类来替代。 其实就是说:同一个继承体系中的对象应该有共同的行为特征。
               
        依赖注入原则:抽象不应该依赖于细节,细节应该依赖于抽象
               核心思想:要依赖于抽象,不要依赖于具体实现。 其实就是说:在应用程序中,所有的类如果使用或依赖于其他的类,则应该依赖这些其他类的抽象类,而不是这些其他类的具体类。为了实现这一原则,就要求我们在编程的时候针对抽象类或者接口编程,而不是针对具体实现编程。
               
        接口分离原则:
               核心思想:不应该强迫程序依赖它们不需要使用的方法。 其实就是说:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口中。
               
        迪米特原则:如果两个类不必要直接通讯,那么使用第三者转发
               核心思想:一个对象应当对其他对象尽可能少的了解 其实就是说:降低各个对象之间的耦合,提高系统的可维护性。在模块之间应该只通过接口编程,而不理会模块的内部工作原理,它可以使各个模块耦合度降到最低,促进软件的复用 。

简单理解:

     单一原则:一个类的功能要单一,方便维护

     开放-封闭原则:一个类中,对修改是封闭的,对扩展是开放的

     依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象

     迪米特法则:如果两个类不必要直接通讯,那么使用第三者转发

(2)设计模式(Design pattern)概述和分类

    A:概述:
          模式就是解决 一类问题的固定步骤 。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式不是一种方法和技术,而是一种思想 ,设计模式和具体的语言无关,学习设计模式就是要建立面向对象的思想,尽可能

的面向接口编程,低耦合,高内聚,使设计的程序可复用。
    
    B:分类
                  A:创建型    创建对象
                  B:结构型    对象的组成(结构)
                  C:行为型    对象的功能
          
Java中的23种设计模式:
Factory(工厂模式),      Builder(建造模式),       Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式),    Facade(门面模式),
Adapter(适配器模式),    Bridge(桥梁模式),        Composite(合成模式),
Decorator(装饰模式),    Flyweight(享元模式),     Proxy(代理模式),
Command(命令模式),      Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式),   Mediator(调停者模式),    Memento(备忘录模式),
Observer(观察者模式),   State(状态模式),         Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)

设计模式概述:
    简单工厂:定义一个类,根据不同的条件生成不同的对象
    
    策略模式(商品促销):定义一个算法家族,定义不同的算法,并使算法的切换不影响到客户端的使用。
    
    装饰模式(穿衣服):动态的给一个类添加一些额外的职责
    
    代理模式(追妹子):为对象提供一个代理,以控制该对象的访问。
    
    工厂方法:一个产品对应一个工厂
    
    原型模式(简历复用):通过克隆原型创建新的对象,克隆的实现:浅复制和深复制
    
    模版方法模式(抄试卷):定义一个操作的模版/骨架,将具体的实现延迟到子类。servlet的doget\dopost
    
    外观模式(股票基金):为一组接口提供一个一致的接口,这个接口使得这组系统更容易进行操作。

    建造者模式(炒饭):将一个复杂对象的构建和表示分离,不同的构建有不同的表示行为。

   观察者模式(老板回来):定义一种一对多的依赖关系,多个观察者同时监听某个主体对象,当这个对象状态变化时,会通知所有观察者进行自动更新。
   
    抽象工厂:工厂类可以提供多个抽象产品,比工厂方法模式产品多。
    
    状态模式(加班):当一个类的状态变化时,允许改变它的行为。用于状态转换的条件过于复杂情况
    
    适配器模式(翻译):将一个类的接口转换成客户需要的标准接口,适用场景:第三方接口的标准使用
    
    备忘录模式(存档):不破坏封装的情况下,将一个对象的状态进行保存,并在特定时候可以还原。
    
    组合模式(分公司):将对象组合成树形结构以表示‘部分-整体’。树,叶节点,子节点
    
    迭代器模式: 常用的增强for循环
    
    单例模式:保证一个类在运行时只有一个实例对象。
    
    桥接模式(手机-软件):将抽象部分与它的实现部分分离,使它们都可以独立变化!
    
   命令模式(烤肉店): 将一个请求封装为一个对象,可用不同的对象对客户进行参数化!对请求排队或记录请求日志,以及支持可撤销的操作!
   
   责任链模式(加薪):使多个对象都有机会处理请求,将多个对象连成一条链,并沿着链去传递请求。每个对象只需要维护下一个链的引用就行。
   
    亨元模式(复制项目):运用共享技术,提供对象的创建
    
    解释器模式(正则):给定一个语言,语法,并定义一个解释器,用这个解释器来解释该语言!
    
    访问者模式(男人-女人):使对象中的各元素的操作,在不改变各元素的前提下,定义这些元素的新操作!

猜你喜欢

转载自blog.csdn.net/Smile_Sunny521/article/details/89520293
今日推荐