设计模式遵守的设计原则

设计模式遵守的设计原则

单一职责原则

是什么?
一个类只负责一个职责
好处?
降低类的复杂度
提高类的可读性 维护性
减低变更引起的风险

接口隔离原则

是什么 ?
一个类对另一个类的依赖应该建立在最小的接口上
在这里插入图片描述

依赖倒置原则

是什么?
面向接口编程,高层模块不应该依赖底层模块,而是应该依赖抽象类或者接口;
抽象不应该依赖细节,细节应该依赖抽象;
对于细节的多变性,抽象的比较稳定.
好处?
抽象类或者接口制定好规范,具体细节有子类实现
实现
1)接口传递
在这里插入图片描述

package dp.denpanceinversionprinciple;

public class TestCase1 {
    
    
	public static void main(String[] args) {
    
    
		B b = new BaseB();
		A a = new BaseA();
		a.operation1(b);//接口依赖
	}
}

interface A{
    
    
	public void operation1(B b);//接口依赖
}
class BaseA implements A{
    
    
	@Override
	public void operation1(B b) {
    
    
		b.methodb();
	}
}

interface B{
    
    
	public void methodb();
}
class BaseB implements B{
    
    
	@Override
	public void methodb() {
    
    
		System.out.println("extends BaseB methodb");
	}
}

2)构造方法传递

package dp.denpanceinversionprinciple;

public class TestCase2 {
    
    
	public static void main(String[] args) {
    
    
		AA a = new BaseAA(new BaseBB());//构造方法依赖
		a.operation1();
	}
}

interface AA{
    
    // 抽象类不能有构造方法
	public void operation1();
}
class BaseAA implements AA{
    
    
	private BB b;
	public BaseAA(BB b) {
    
    //构造方法依赖
		this.b = b;
	}
	@Override
	public void operation1() {
    
    
		b.methodb();
	}
}

interface BB{
    
    
	public void methodb();
}
class BaseBB implements BB{
    
    
	@Override
	public void methodb() {
    
    
		System.out.println("extends BaseB methodb");
	}
}








3)set方法传递

package dp.denpanceinversionprinciple;

public class TestCase3 {
    
    
	public static void main(String[] args) {
    
    
		AAA a = new BaseAAA();
		BBB b = new BaseBBB();
		a.setB(b);//set方法依赖
		a.operation1();
	}
}

interface AAA{
    
    // 抽象类不能有构造方法
	public void setB(BBB b);
	public void operation1();
}
class BaseAAA implements AAA{
    
    
	private BBB b;
	public void setB(BBB b) {
    
     //set方法依赖
		this.b = b;
	}
	@Override
	public void operation1() {
    
    
		b.methodb();
	}
}

interface BBB{
    
    
	public void methodb();
}
class BaseBBB implements BBB{
    
    
	@Override
	public void methodb() {
    
    
		System.out.println("extends BaseB methodb");
	}
}








里氏替换原则

是什么?
类和类之间的引用尽量减少使用继承,多使用聚合 组合 依赖等减少父类变化引起子类的变化。
在使用继承时,尽量少重写父类中的方法。

开闭原则

是编程中最基础最重要的设计原则

是什么?
对扩展开发,对修改关闭(调用方的修改)

迪米特原则

是什么?
类调用别的类时,对调用方知道越少越好 。一个类对自己依赖的类知道的越少越好。

合成复用原则

是什么?
原则是尽量使用合成、聚合的方式,而不是使用继承

设计原则的核心目的:高内聚 低耦合;使用接口编程

おすすめ

転載: blog.csdn.net/weixin_39472101/article/details/121340234