java设计模式

Posted 指导毕业设计Monkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java设计模式相关的知识,希望对你有一定的参考价值。

文章目录

设计模式

设计模式概念:(design pattern)

是对在软件设计普遍存在(反复出现)的各种问题,提出 的一种解决方案。使用设计模式可以使用项目具有:可扩展性,维护性,可靠性(新增一个功能对原来的功能影响不大),可复用性,效率提高等等.

1.七大原则

1.单一职责原则

(每个类或者每个方法只需要实现一个职责,不需要实现很多其他的功能。)在类中的方法足够多需要在类的层面遵守单一职责原则

方法遵循单一职责代码实现:

package com.example;

public class SingleResponsibility 
    public static void main(String[] args) 
        Vehicle vehicle = new Vehicle();
        vehicle.runAir("飞机");
        vehicle.runRolad("车子");
        vehicle.runWater("游艇");
     
    

class Vehicle
    public void runRolad(String vehicle)
        System.out.println(vehicle + "在公路上面运行");

    
    public void runWater(String vehicle)
        System.out.println(vehicle + "在水中上面运行");
    

    public void runAir(String vehicle)
        System.out.println(vehicle + "在天上运行");
    

2.接口隔离原则

package com.example;

public class Segeration1 
    public static void main(String[] args) 

    


interface Interface1
    void method1();
    void method2();
    void method3();
    void method4();
    void method5();




class  B implements Interface1

    public void method1() 
        System.out.println("B实现了method1()");

    


    public void method2() 
        System.out.println("B实现了method2()");

    

    @Override
    public void method3() 
        System.out.println("B实现了method3()");
    

    @Override
    public void method4() 
        System.out.println("B实现了method4()");
    

    @Override
    public void method5() 
        System.out.println("B实现了method5()");
    


class  D implements Interface1

    public void method1() 
        System.out.println("D实现了method1()");

    


    public void method2() 
        System.out.println("D实现了method2()");

    

    @Override
    public void method3() 
        System.out.println("D实现了method3()");
    

    @Override
    public void method4() 
        System.out.println("D实现了method4()");
    

    @Override
    public void method5() 
        System.out.println("D实现了method5()");
    



class A  //A类通过接口依赖使用B类, 但是只会用到 1,2,3方法
    public void depend1(Interface1 i)
        i.method1();
    
    public void depend2(Interface1 i)
        i.method2();

    
    public void depend3(Interface1 i)
        i.method3();

    



class C  //C类通过接口依赖使用D类, 但是只会用到 1,4,5方法
    public void depend1(Interface1 i)
        i.method1();
    
    public void depend4(Interface1 i)
        i.method4();

    
    public void depend5(Interface1 i)
        i.method3();

    


package com.example;

public class Segeration1 
    public static void main(String[] args) 
        A a = new A();
        a.depend1(new B());
        a.depend2(new B());
        a.depend3(new B());

        C c = new C();
        c.depend1(new D());
        c.depend4(new D());
        c.depend5(new D());

    


//接口进行隔离之后
interface Interface1
    void method1();

interface Interface2
    void method2();
    void method3();



interface Interface3
    void method4();
    void method5();




class  B implements Interface1,Interface2

    public void method1() 
        System.out.println("B实现了method1()");

    

    public void method2() 
        System.out.println("B实现了method2()");
    
    @Override
    public void method3() 
        System.out.println("B实现了method3()方法");
    




class  D implements Interface1,Interface3

    public void method1() 
        System.out.println("D实现了method1()");

    

    @Override
    public void method4() 
        System.out.println("D实现了method4()");

    

    @Override
    public void method5() 
        System.out.println("D实现了method5()");

    



class A  //A类通过接口依赖使用B类, 但是只会用到 1,2,3方法
    public void depend1(Interface1 i)
        i.method1();
    
    public void depend2(Interface2 i)
        i.method2();

    
    public void depend3(Interface2 i)
        i.method3();

    



class C  //C类通过接口依赖使用D类, 但是只会用到 1,4,5方法
    public void depend1(Interface1 i)
        i.method1();
    
    public void depend4(Interface3 i)
        i.method4();

    
    public void depend5(Interface3 i)
        i.method5();

    


3.依赖倒置原则

4.里氏替换原则

5.开闭原则

6.迪米特法原则

7.合成复用原则

8.经典面试题目?

  1. 在项目的实际开发中哪里使用了ocp原则? (工厂模式中有用)

  2. spring中应用了哪些设计模式,原型模式在哪里 用到?

  3. 什么是解释器设计模式?画出它的UML类图,分析各个角色是什么?

  4. spring框架中哪里使用到了解释器设计模式?并做源码级别分析

  5. 单例模式一共有几种实现方式?用代码实现,并说明各个的优点缺点。

单列设计模式有几种实现方式?

  1. 饿汉式 两种

  2. 懒汉式 三种

  3. 双重检查

  4. 静态内部类

以上是关于java设计模式的主要内容,如果未能解决你的问题,请参考以下文章