From 78f405dbb4150eba0ac5eb6d624bfe6928030199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Sat, 22 Sep 2018 11:46:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=9A=94=E7=A6=BB=E5=8E=9F?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interfacesegregation/after/Bird.java | 19 ++++++++++++++++ .../interfacesegregation/after/Dog.java | 20 +++++++++++++++++ .../after/IEatAction.java | 11 ++++++++++ .../after/IFlyAction.java | 9 ++++++++ .../after/ISwimAction.java | 9 ++++++++ .../interfacesegregation/before/Bird.java | 22 +++++++++++++++++++ .../interfacesegregation/before/Dog.java | 22 +++++++++++++++++++ .../before/IAnimalAction.java | 16 ++++++++++++++ 8 files changed, 128 insertions(+) create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Bird.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Dog.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IEatAction.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IFlyAction.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/ISwimAction.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Bird.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Dog.java create mode 100644 src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/IAnimalAction.java diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Bird.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Bird.java new file mode 100644 index 0000000..207debb --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Bird.java @@ -0,0 +1,19 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.after; + +/** + * 实现类可以实现需要的接口 + * + * @author F嘉阳 + * @date 2018-09-22 11:43 + */ +public class Bird implements IFlyAction, IEatAction { + @Override + public void eat() { + + } + + @Override + public void fly() { + + } +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Dog.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Dog.java new file mode 100644 index 0000000..cc6f9cb --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/Dog.java @@ -0,0 +1,20 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.after; + +/** + * 接口隔离注重接口方法之间的关系 + * 单一职责关心类、方法、接口承担的职责,即一个接口只要职责单一就不关系方法之间的关系 + * + * @author F嘉阳 + * @date 2018-09-22 11:44 + */ +public class Dog implements IEatAction, ISwimAction { + @Override + public void eat() { + + } + + @Override + public void swim() { + + } +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IEatAction.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IEatAction.java new file mode 100644 index 0000000..dbfaa37 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IEatAction.java @@ -0,0 +1,11 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.after; + +/** + * 隔离接口方法,但注意适度,不是越少越好 + * + * @author F嘉阳 + * @date 2018-09-22 11:42 + */ +public interface IEatAction { + void eat(); +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IFlyAction.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IFlyAction.java new file mode 100644 index 0000000..920979f --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/IFlyAction.java @@ -0,0 +1,9 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.after; + +/** + * @author F嘉阳 + * @date 2018-09-22 11:43 + */ +public interface IFlyAction { + void fly(); +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/ISwimAction.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/ISwimAction.java new file mode 100644 index 0000000..a4bb218 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/after/ISwimAction.java @@ -0,0 +1,9 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.after; + +/** + * @author F嘉阳 + * @date 2018-09-22 11:43 + */ +public interface ISwimAction { + void swim(); +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Bird.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Bird.java new file mode 100644 index 0000000..9194433 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Bird.java @@ -0,0 +1,22 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.before; + +/** + * @author F嘉阳 + * @date 2018-09-22 11:41 + */ +public class Bird implements IAnimalAction { + @Override + public void eat() { + + } + + @Override + public void fly() { + + } + + @Override + public void swim() { + // 不需要的接口,但被迫实现 + } +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Dog.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Dog.java new file mode 100644 index 0000000..95f7941 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/Dog.java @@ -0,0 +1,22 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.before; + +/** + * @author F嘉阳 + * @date 2018-09-22 11:44 + */ +public class Dog implements IAnimalAction { + @Override + public void eat() { + + } + + @Override + public void fly() { + // 不需要的接口,但被迫实现 + } + + @Override + public void swim() { + + } +} diff --git a/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/IAnimalAction.java b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/IAnimalAction.java new file mode 100644 index 0000000..a1b79b9 --- /dev/null +++ b/src/main/java/top/fjy8018/designpattern/principle/interfacesegregation/before/IAnimalAction.java @@ -0,0 +1,16 @@ +package top.fjy8018.designpattern.principle.interfacesegregation.before; + +/** + * 接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上 + * 旧版:一个接口承担过多功能,使得实现类对有些不需要的方法也必须实现 + * + * @author F嘉阳 + * @date 2018-09-22 11:40 + */ +public interface IAnimalAction { + void eat(); + + void fly(); + + void swim(); +}