Qual è la differenza tra Bridge e Factory Pattern? entrambi i pattern sembrano instanitare la classe a seconda della logica dal lato client.
Modello di fabbrica
interface IFactory {
void GetProduct();
}
class Germany : IFactory {
public void GetProduct() {
Console.WriteLine("germany");
}
}
class Russia : IFactory {
public void GetProduct() {
Console.WriteLine("Russia");
}
}
class Canada : IFactory {
public void GetProduct() {
Console.WriteLine("Canada");
}
}
class Component {
IFactory factory;
public Component(IFactory component) {
this.factory = component;
}
public void BuyProduct() {
factory.GetProduct();
}
}
class Client {
static void Main() {
Component component = new Component(new Canada());
component.BuyProduct();
Console.Read();
}
}
Modello di ponte
interface IBridge
{
void print();
}
class ImplementationA : IBridge
{
public void print()
{
Console.WriteLine("implementation A");
}
}
class ImplementationB : IBridge
{
public void print()
{
Console.WriteLine("implementation A");
}
}
class Abstraction
{
IBridge bridge;
public Abstraction(IBridge bridge)
{
this.bridge = bridge;
}
public void caller()
{
bridge.print();
}
}
class Client
{
static void Main()
{
new Abstraction(new ImplementationA()).caller();
}
}
in entrambi i pattern Factory e Bridge possiamo vedere che la classe è istanziata dal client su qualche logica. Non è sia il codice che fa la stessa cosa. In Factory pattern, la logica dei client decide quale classe deve essere istanziata, che è lo stesso caso con Bridge Pattern.
quindi, qual è il cambiamento, per favore aiutami a capirlo