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(); +}