From 65f6f416c57c4fff6eb10e72881cd3817f1badec Mon Sep 17 00:00:00 2001 From: Dileesha Rajapakse Date: Sun, 14 May 2023 22:45:57 +0530 Subject: [PATCH] Add java interface single implementation examples (#13972) --- .../baeldung/interfacesingleimpl/Animal.java | 5 ++ .../interfacesingleimpl/AnimalCare.java | 13 +++++ .../com/baeldung/interfacesingleimpl/Cat.java | 21 ++++++++ .../com/baeldung/interfacesingleimpl/Dog.java | 22 ++++++++ .../InterfaceSingleImplUnitTest.java | 51 +++++++++++++++++++ .../interfacesingleimpl/MockAnimal.java | 8 +++ 6 files changed, 120 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java new file mode 100644 index 0000000000..b20c01cac9 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Animal.java @@ -0,0 +1,5 @@ +package com.baeldung.interfacesingleimpl; + +public interface Animal { + String makeSound(); +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java new file mode 100644 index 0000000000..0d7b732056 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/AnimalCare.java @@ -0,0 +1,13 @@ +package com.baeldung.interfacesingleimpl; + +public class AnimalCare { + private Animal animal; + + public AnimalCare(Animal animal) { + this.animal = animal; + } + + public String animalSound() { + return animal.makeSound(); + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java new file mode 100644 index 0000000000..7540e0823b --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Cat.java @@ -0,0 +1,21 @@ +package com.baeldung.interfacesingleimpl; + +public class Cat { + private String name; + + public Cat(String name) { + this.name = name; + } + + public String makeSound() { + return "Meow! My name is " + name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java new file mode 100644 index 0000000000..1dfd3bea0d --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/interfacesingleimpl/Dog.java @@ -0,0 +1,22 @@ +package com.baeldung.interfacesingleimpl; + +public class Dog implements Animal { + private String name; + + public Dog(String name) { + this.name = name; + } + + @Override + public String makeSound() { + return "Woof! My name is " + name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java new file mode 100644 index 0000000000..4044a554a3 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/InterfaceSingleImplUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.interfacesingleimpl; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; + +public class InterfaceSingleImplUnitTest { + @Test + public void whenUsingMockAnimal_thenAnimalSoundIsCorrect() { + MockAnimal mockAnimal = new MockAnimal(); + String expected = "Mock animal sound!"; + AnimalCare animalCare = new AnimalCare(mockAnimal); + assertThat(animalCare.animalSound()).isEqualTo(expected); + } + + @Test + public void whenCreatingDog_thenDogMakesWoofSound() { + Dog dog = new Dog("Buddy"); + String expected = "Woof! My name is Buddy"; + assertThat(dog.makeSound()).isEqualTo(expected); + } + + @Test + public void whenCreatingCat_thenCatMakesMeowSound() { + Cat cat = new Cat("FuzzBall"); + String expected = "Meow! My name is FuzzBall"; + assertThat(cat.makeSound()).isEqualTo(expected); + } + + @Test + public void whenCreatingAnimalCareWithDog_thenDogMakesWoofSound() { + Animal dog = new Dog("Ham"); + AnimalCare animalCare = new AnimalCare(dog); + String expected = "Woof! My name is Ham"; + assertThat(animalCare.animalSound()).isEqualTo(expected); + } + + @Test + public void whenCreatingCatCareWithCat_thenCatMakesMeowSound() { + Cat cat = new Cat("Grumpy"); + String expected = "Meow! My name is Grumpy"; + assertThat(cat.makeSound()).isEqualTo(expected); + } + + @Test + public void whenCreatingMockAnimal_thenMockAnimalMakesMockAnimalSound() { + MockAnimal mockAnimal = new MockAnimal(); + String expected = "Mock animal sound!"; + assertThat(mockAnimal.makeSound()).isEqualTo(expected); + } +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java new file mode 100644 index 0000000000..1d3b264f45 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/interfacesingleimpl/MockAnimal.java @@ -0,0 +1,8 @@ +package com.baeldung.interfacesingleimpl; + +public class MockAnimal implements Animal { + @Override + public String makeSound() { + return "Mock animal sound!"; + } +}