桥接模式
1 怎么这个看了也觉得怪怪的。看来没有实际去使用过,去设计过框架,会觉得奇怪。
2 有一个点很重要。一般的方式是,多种类型物品,提取出一个抽象,然后继承。然而桥接模式就不是这样做,它是写一个接口A作为桥接,然后写另外一个抽象类B去调用这个接口A,然后具体类C继承于B再由C调用A接口。这个时候,如果你对C调用A的方法进行改动,那么就相当于对A进行改动,这种改动不需要大量修改代码。
3 哦我想到一点。一般是抽象出一个类,然后继承,然后调用抽象类的的方法。这个时候如果你想要对抽象方法统一做一些处理,,,怎么回事,我觉得直接在抽象类里面再写多一个方法就可以解决的事情,为什么非要搞多一套东西出来。oh,不对,再写多一个办法的话,那之前调用那个方法就都要改成新加的方法。所以这个还是有道理的。重新说一次。一个抽象类的抽象方法,如果它的内容要修改,那么会导致很多地方都要修改。如果在设计之初,预料到抽象类会变动(变动类型是,在原来抽象方法的基础上做一些操作,提取多一层),就可以使用桥接模式。
4 说起来有点乱,最终目的就是为了当基类方法要修改时,可以少改动代码。我说完了。。。
5 设计模式都是因为需求而存在的,比如说我现在有这么一个需求,抽像类的某个抽象方法要修改。你看,问题就出现了,改抽象类的抽象方法吧,那子类的方法都要改,非常的不方便。
public interface ImobileBridge
{
void Unlock();
}
public class IPhone : ImobileBridge
{
public void Unlock()
{
Console.WriteLine("iphone unlocak");
}
}
public class HuaWei : ImobileBridge
{
public void Unlock()
{
Console.WriteLine("HuaWei unlock");
}
}
public class UseMobile
{
public static void UnlockMobile(ImobileBridge mobile)
{
mobile.Unlock();
FingerPrint();
}
/**好了,下面这个地方才是重点。如果解锁分的更细了,要用上指纹判断。如果只是常规的一层抽象和继承,那么指纹判断这个方法放在哪里都不太合适。如果我们使用了桥接方法,那么只需要对这个方法
进行修改就可以了,这时就能感觉出非常的方便。**/
public static void FingerPrint()
{
}
}
public class User1
{
public ImobileBridge mobile = new IPhone();
public void OpenMobile()
{
UseMobile.UnlockMobile(mobile);
}
}
public class User2
{
public ImobileBridge mobile = new HuaWei();
public void OpenMobile()
{
UseMobile.UnlockMobile(mobile);
}
}
1745

被折叠的 条评论
为什么被折叠?



