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设计模式的主要内容,如果未能解决你的问题,请参考以下文章

租用游艇

luogu1359 租用游艇

P1359 租用游艇

洛谷 P1359 租用游艇

洛谷 P1359 租用游艇

P1359 租用游艇