栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java设计模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java设计模式

文章目录
  • 设计模式
        • 设计模式概念:(design pattern)
    • 1.七大原则
      • 1.单一职责原则
      • 2.接口隔离原则
      • 3.依赖倒置原则
      • 4.里氏替换原则
      • 5.开闭原则
      • 6.迪米特法原则
      • 7.合成复用原则
      • 8.经典面试题目?

设计模式 设计模式概念:(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. 静态内部类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/924158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号