Adaptor pattern
public class Duck
{
public void Quack() { }
public void Fly() { }
}
public class Turkey
{
public void Gobble() { }
public void Fly() { }
}
public class TurkeyAdapter : Duck
{
private Turkey turkey;
public TurkeyAdapter(Turkey turkey) { this.turkey = turkey; }
public void Quack() { turkey.Gobble(); }
public void Fly() { turkey.Fly(); }
}
Pacade pattern
public class Amplifier
{
public void SetStreamingPlayer(StreamingPlayer streamingPlayer) { }
public void SetSurroundSound() { }
public void SetVolume(int volume) { }
public void Off() { }
public void On() { }
}
public class Tuner
{
}
public class StreamingPlayer
{
public void On() { }
public void Off() { }
public void Stop() { }
public void Play(string movie) { }
}
public class Projector
{
public void On() { }
public void Off() { }
public void WideScreenMode() { }
}
public class TheaterLights
{
public void Dim(int level) { }
public void On() { }
}
public class Screen
{
public void Down() { }
public void Up() { }
}
public class PopcornPopper
{
public void On() { }
public void Off() { }
public void Pop() { }
}
public class HomeTheaterFacade
{
private Amplifier amplifier;
private Tuner tuner;
private StreamingPlayer streamingPlayer;
private Projector projector;
private TheaterLights theaterLights;
private Screen screen;
private PopcornPopper popcornPopper;
public HomeTheaterFacade(Amplifier amplifier, Tuner tuner,
StreamingPlayer streamingPlayer,Projector projector,
TheaterLights theaterLights, Screen screen,
PopcornPopper popcornPopper)
{
this.amplifier = amplifier;
this.tuner = tuner;
this.streamingPlayer = streamingPlayer;
this.projector = projector;
this.theaterLights = theaterLights;
this.screen = screen;
this.popcornPopper = popcornPopper;
}
public void WatchMovie(string movie)
{
Console.WriteLine("Get ready to watch a movie...");
popcornPopper.On();
popcornPopper.Pop();
theaterLights.Dim(10);
screen.Down();
projector.On();
projector.WideScreenMode();
amplifier.On();
amplifier.SetSurroundSound();
amplifier.SetStreamingPlayer(streamingPlayer);
amplifier.SetVolume(5);
streamingPlayer.On();
streamingPlayer.Play(movie);
}
public void EndMovie()
{
Console.WriteLine("Shutting movie theater down...");
amplifier.Off();
projector.Off();
theaterLights.On();
screen.Up();
popcornPopper.Off();
streamingPlayer.Stop();
streamingPlayer.Off();
}
}
'코딩 공부 > 디자인패턴' 카테고리의 다른 글
반복자 패턴, 컴포지트 패턴 (0) | 2024.12.05 |
---|---|
템플릿 메소드 패턴 (0) | 2024.12.05 |
커맨드 패턴 (0) | 2024.12.04 |
팩토리 패턴 (0) | 2024.12.03 |
데코레이터 패턴 (0) | 2024.12.03 |