Skip to content

Commit 117d455

Browse files
author
Arpit Aggarwal
committed
Optional OfNullable with map
1 parent e3b44ec commit 117d455

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1180
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.test.design.adapter;
2+
3+
public class AdapterPatternDemo {
4+
public static void main(String[] args) {
5+
AudioPlayer audioPlayer = new AudioPlayer();
6+
7+
audioPlayer.play("mp3", "beyond the horizon.mp3");
8+
audioPlayer.play("mp4", "alone.mp4");
9+
audioPlayer.play("vlc", "far far away.vlc");
10+
audioPlayer.play("avi", "mind me.avi");
11+
}
12+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.test.design.adapter;
2+
3+
public interface AdvancedMediaPlayer {
4+
public void playVlc(String fileName);
5+
6+
public void playMp4(String fileName);
7+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.test.design.adapter;
2+
3+
public class AudioPlayer implements MediaPlayer {
4+
5+
MediaAdapter mediaAdapter;
6+
7+
@Override
8+
public void play(String audioType, String fileName) {
9+
10+
// inbuilt support to play mp3 music files
11+
if (audioType.equalsIgnoreCase("mp3")) {
12+
System.out.println("Playing mp3 file. Name: " + fileName);
13+
}
14+
15+
// mediaAdapter is providing support to play other file formats
16+
else if (audioType.equalsIgnoreCase("vlc")
17+
|| audioType.equalsIgnoreCase("mp4")) {
18+
mediaAdapter = new MediaAdapter(audioType);
19+
mediaAdapter.play(audioType, fileName);
20+
}
21+
22+
else {
23+
System.out.println("Invalid media. " + audioType
24+
+ " format not supported");
25+
}
26+
}
27+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.test.design.adapter;
2+
3+
public class MediaAdapter implements MediaPlayer {
4+
5+
AdvancedMediaPlayer advancedMusicPlayer;
6+
7+
public MediaAdapter(String audioType) {
8+
9+
if (audioType.equalsIgnoreCase("vlc")) {
10+
advancedMusicPlayer = new VlcPlayer();
11+
12+
} else if (audioType.equalsIgnoreCase("mp4")) {
13+
advancedMusicPlayer = new Mp4Player();
14+
}
15+
}
16+
17+
@Override
18+
public void play(String audioType, String fileName) {
19+
20+
if (audioType.equalsIgnoreCase("vlc")) {
21+
advancedMusicPlayer.playVlc(fileName);
22+
} else if (audioType.equalsIgnoreCase("mp4")) {
23+
advancedMusicPlayer.playMp4(fileName);
24+
}
25+
}
26+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.test.design.adapter;
2+
3+
public interface MediaPlayer {
4+
public void play(String audioType, String fileName);
5+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.test.design.adapter;
2+
3+
public class Mp4Player implements AdvancedMediaPlayer {
4+
5+
@Override
6+
public void playVlc(String fileName) {
7+
// do nothing
8+
}
9+
10+
@Override
11+
public void playMp4(String fileName) {
12+
System.out.println("Playing mp4 file. Name: " + fileName);
13+
}
14+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Adapter Design Pattern is a Structural Design Pattern - Adapter pattern works as a bridge between two incompatible interfaces.
2+
3+
This pattern involves a single class which is responsible to join functionalities of independent
4+
or incompatible interfaces. A real life example could be a case of card reader which acts as
5+
an adapter between memory card and a laptop. You plugin the memory card into card reader and
6+
card reader into the laptop so that memory card can be read via laptop.
7+
8+
Adapter (recognizeable by creational methods taking an instance of different abstract/interface type
9+
and returning an implementation of own/another abstract/interface type which decorates/overrides the given instance)
10+
1). java.util.Arrays#asList()
11+
2). java.io.InputStreamReader(InputStream) (returns a Reader)
12+
3). java.io.OutputStreamWriter(OutputStream) (returns a Writer)
13+
4). javax.xml.bind.annotation.adapters.XmlAdapter#marshal() and #unmarshal()
14+
15+
Reference - http://www.tutorialspoint.com/design_pattern/adapter_pattern.htm
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.test.design.adapter;
2+
3+
public class VlcPlayer implements AdvancedMediaPlayer {
4+
@Override
5+
public void playVlc(String fileName) {
6+
System.out.println("Playing vlc file. Name: " + fileName);
7+
}
8+
9+
@Override
10+
public void playMp4(String fileName) {
11+
// do nothing
12+
}
13+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.test.design.builder;
2+
3+
public class Bottle implements Packing {
4+
5+
@Override
6+
public String pack() {
7+
return "Bottle";
8+
}
9+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.test.design.builder;
2+
3+
public class BuilderPatternDemo {
4+
5+
public static void main(String[] args) {
6+
7+
MealBuilder mealBuilder = new MealBuilder();
8+
9+
Meal vegMeal = mealBuilder.prepareVegMeal();
10+
System.out.println("Veg Meal");
11+
vegMeal.showItems();
12+
System.out.println("Total Cost: " + vegMeal.getCost());
13+
14+
Meal nonVegMeal = mealBuilder.prepareNonVegMeal();
15+
System.out.println("\n\nNon-Veg Meal");
16+
nonVegMeal.showItems();
17+
System.out.println("Total Cost: " + nonVegMeal.getCost());
18+
}
19+
}

0 commit comments

Comments
 (0)