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

设计模式的七大原则(一)

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

设计模式的七大原则(一)

设计原则

一、前言二、单一职责原则2.1、概念

2.2、代码演示 2.2、单一职责原则注意事项和细节三、接口隔离原则

3.1、基本介绍3.2、传统方法的问题和使用接口隔离原则改进3.3、代码演示

一、前言

通常很多人都认为设计模式原则是六个,而我这里写了七个。大家不要以为是写错了。多余的话就不说了,往下看就行知道了。 二、单一职责原则 2.1、概念

对于类来说,即一个类应该只负责一项职责。如果类A负责两个不同的职责:职责1、指责2。当职责1需求改更而改变A时,可能会造成职责2执行错误。所以需要将类A分解为A1、A2。 2.2、代码演示

下面举一个交通工具运行的例子。
现在有一个类,用来负责交通工具运行。如下,但是假设现在传递进来的是飞机,就会出现飞机在地上跑这种情况,然而这种情况显然是不对的。

public class Vehicle{
	public void run(String name) {
		Sysout.out.printfln(name + ":在地上跑");
	}
}

解决方案:将每个类的职责分离出来。交通工具接口

public interface Vehicle{
	public void run(String name);
}

飞行工具

public class AirVehicle implements Vehicle{
	
	@Override
	public void run(String name) {
		System.out.println(name + "在天上飞");
	}
}

水里交通工具

public class WaterVehicle implements Vehicle{
	@Override
	public void run(String name) {
		Sysout.out.println(name + "在水里跑");
	}
}

陆地交通工具

public class LandVehicle implements Vehicle{
	@Override
	public void run(String name) {
		Sysout.out.println(name + "在陆地上跑");
	}
}

测试类

public class Test{
	public static void main(String[] args) {
		LandVehicle lv = new LandVehicle();
		lv.run("汽车");
	}
}

通过将每个类的职能分离出来,从而实现类的纯粹化,即就是单一职责原则;

2.2、单一职责原则注意事项和细节

降低类的复杂度。一个类只负责一项职责。提高类的可读性,可维护性。降低类因为变更而引起的风险。通常情况下,我们应该遵守单一职责原则,只有逻辑足够简单,才可以在代码级别违反单一职责原则。只有类中方法数量足够少,可以在方法级别保持单一职责原则。 三、接口隔离原则 3.1、基本介绍

客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小接口上。 3.2、传统方法的问题和使用接口隔离原则改进

类A通过接口interface依赖B,类C通过·接口interface依赖类D,如果接口interface对于类A和类C来说不是最小的接口,那么类B和类D必须去2实现他们不需要的方法;将接口interface拆分为独立的几个接口,类A和类C分别与他们1需要的接口建立依赖关系。也就是采用接口隔离原则。 3.3、代码演示

在正式开始之前,先举一个有问题的例子,方便理解。ClassB依赖于ClassA,去调用func1();但是只需要调用func1()方法,但是ClassA却要实现接口里所有的方法,所以这样写就会使得Class过于复杂。

public interface Interface{
	public void func1();
	public void func2();
	public void func3();
	public void func4();
	public void func5();
}
public class ClassA implements Interface{
	@Override
	public void func1() {
	}

	@Override
	public void func2() {
	}
	
	@Override
	public void func3() {
	}
	
	@Override
	public void func4() {
	}
	
	@Override
	public void func5() {
	}
}
public class ClassB{
	public void depend1(Interface i) {
		i.func1();
	}
}
public class Test {
	public static void main(String[] args) {
		ClassB b= new ClassB();
		b.depend1(new ClassA());
	}
}

因此,提出了接口隔离原则。其实所谓的接口隔离原则就是将一个接口进行分解,将方法分到不同的接口中去。

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

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

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