- 设计模式
- 设计模式概念:(design pattern)
- 1.七大原则
- 1.单一职责原则
- 2.接口隔离原则
- 3.依赖倒置原则
- 4.里氏替换原则
- 5.开闭原则
- 6.迪米特法原则
- 7.合成复用原则
- 8.经典面试题目?
是对在软件设计普遍存在(反复出现)的各种问题,提出 的一种解决方案。使用设计模式可以使用项目具有:可扩展性,维护性,可靠性(新增一个功能对原来的功能影响不大),可复用性,效率提高等等.
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.经典面试题目?
-
在项目的实际开发中哪里使用了ocp原则? (工厂模式中有用)
-
spring中应用了哪些设计模式,原型模式在哪里 用到?
-
什么是解释器设计模式?画出它的UML类图,分析各个角色是什么?
-
spring框架中哪里使用到了解释器设计模式?并做源码级别分析
-
单例模式一共有几种实现方式?用代码实现,并说明各个的优点缺点。
单列设计模式有几种实现方式?
-
饿汉式 两种
-
懒汉式 三种
-
双重检查
-
静态内部类



