Initial Commit (w/ Ch1Duck first implementation)
This commit is contained in:
11
Ch1Duck/Ch1Duck.csproj
Normal file
11
Ch1Duck/Ch1Duck.csproj
Normal file
@@ -0,0 +1,11 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<LangVersion>latestmajor</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
19
Ch1Duck/Duck.cs
Normal file
19
Ch1Duck/Duck.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace Ch1Duck;
|
||||
|
||||
public abstract class Duck(IFlyBehaviour flyBehaviour, IQuackBehaviour quackBehaviour) {
|
||||
public abstract void Display();
|
||||
|
||||
public void PerformFly() {
|
||||
flyBehaviour.Fly();
|
||||
}
|
||||
|
||||
public void PerformQuack() {
|
||||
quackBehaviour.Quack();
|
||||
}
|
||||
}
|
||||
|
||||
public class MallardDuck() : Duck(new FlyWithWings(), new NormalQuack()) {
|
||||
public override void Display() {
|
||||
Console.WriteLine("I'm a real Mallard duck");
|
||||
}
|
||||
}
|
||||
17
Ch1Duck/Fly.cs
Normal file
17
Ch1Duck/Fly.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace Ch1Duck;
|
||||
|
||||
public interface IFlyBehaviour {
|
||||
void Fly();
|
||||
}
|
||||
|
||||
public class FlyWithWings: IFlyBehaviour {
|
||||
public void Fly() {
|
||||
Console.WriteLine("I'm flying!");
|
||||
}
|
||||
}
|
||||
|
||||
public class FlyNoWay: IFlyBehaviour {
|
||||
public void Fly() {
|
||||
Console.WriteLine("I can't fly");
|
||||
}
|
||||
}
|
||||
7
Ch1Duck/Program.cs
Normal file
7
Ch1Duck/Program.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
// See https://aka.ms/new-console-template for more information
|
||||
|
||||
using Ch1Duck;
|
||||
|
||||
Duck mallard = new MallardDuck();
|
||||
mallard.PerformQuack();
|
||||
mallard.PerformFly();
|
||||
23
Ch1Duck/Quack.cs
Normal file
23
Ch1Duck/Quack.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
namespace Ch1Duck;
|
||||
|
||||
public interface IQuackBehaviour {
|
||||
void Quack();
|
||||
}
|
||||
|
||||
public class NormalQuack: IQuackBehaviour {
|
||||
public void Quack() {
|
||||
Console.WriteLine("Quack");
|
||||
}
|
||||
}
|
||||
|
||||
public class MuteQuack : IQuackBehaviour {
|
||||
public void Quack() {
|
||||
Console.WriteLine("<< Silence >>");
|
||||
}
|
||||
}
|
||||
|
||||
public class Squeak: IQuackBehaviour {
|
||||
public void Quack() {
|
||||
Console.WriteLine("Squeak");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user