知优码

您现在的位置是:首页 > Java经验 > 常见问题

常见问题

java面向对象六大设计原则讲解

知优码 2019-11-19常见问题
设计模式中的6个设计原则分别是:1.单一职责原则2.里氏替换原则3. 接口隔离原则4. 依赖倒置原则5.迪米特原则6.开-闭原则

设计模式中的6个设计原则分别是:

  1.单一职责原则描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致

  2.里氏替换原则这个原则表达的意思是一个子类应该可以替换掉父类并且可以正常工作

  3. 接口隔离原则也称接口最小化原则,强调的是一个接口拥有的行为应该尽可能的小

  4. 依赖倒置原则这个原则描述的是高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象

  5.迪米特原则也称最小知道原则,即一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触

  6.开-闭原则最后一个原则,一句话,对修改关闭,对扩展开放

23种设计模式:

  1.工厂方法模式

    

    工厂方法模式的UML结构图:

 

         

 

        Product:抽象产品。所有的产品必须实现这个共同的接口,这样一来,使用这些产品的类既可以引用这个接口。而不是具体类。

 

        ConcreteProduct:具体产品。

 

        Creator:抽象工厂。它实现了所有操纵产品的方法,但不实现工厂方法。Creator所有的子类都必须要实现factoryMethod()方法。

 

        ConcreteCreator:具体工厂。制造产品的实际工厂。它负责创建一个或者多个具体产品,只有ConcreteCreator类知道如何创建这些产品。

 

        工厂方法模式是简单工厂模式的延伸。在工厂方法模式中,核心工厂类不在负责产品的创建,而是将具体的创建工作交给子类去完成。也就是后所这个核心工厂仅仅只是提供创建的接口,具体实现方法交给继承它的子类去完成。当我们的系统需要增加其他新的对象时,我们只需要添加一个具体的产品和它的创建工厂即可,不需要对原工厂进行任何修改,这样很好地符合了“开闭原则”。

 2.抽象工厂模式

在工厂方法模式中,我们使用一个工厂创建一个产品,也就是说一个具体的工厂对应一个具体的产品。但是有时候我们需要一个工厂能够提供多个产品对象,而不是单一的对象,这个时候我们就需要使用抽象工厂模式。

        在讲解抽象工厂模式之前,我们需要厘清两个概念:

        产品等级结构。产品的等级结构也就是产品的继承结构。例如一个为空调的抽象类,它有海尔空调、格力空调、美的空调等一系列的子类,那么这个抽象类空调和他的子类就构成了一个产品等级结构。

        产品族。产品族是在抽象工厂模式中的。在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品。比如,海尔工厂生产海尔空调。海尔冰箱,那么海尔空调则位于空调产品族中。

        产品等级结构和产品族结构示意图如下:

        一、基本定义                                                                                                                                                                                                          

        抽象工厂模式提供一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类。

        抽象工厂允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际产出的具体产品是什么。这样一来,客户就可以从具体的产品中被解耦。

 

        二、模式结构                                                                                                                                                                                                              

        抽象工厂模式的UML结构图如下: