适配器模式
将一个类的接口转化成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类在一起工作。
class Target{
public void Request(){
Console.WriteLine("普通请求!");
}
}
class Adaptee{
public void SpecificRequest(){
Console.WriteLine("特殊需求!");
}
}
class Adapter:Target{
private Adaptee adaptee=new Adaptee();
public void Request(){
adaptee.SpecificRequest();
}
}
//console
Target target=new Adapter();
//表面上调用Request实际调用SpecificRequest.
target.Request();
桥接模式
//手机软件
interface HandsetSoft{
public void Run();
}
//手机游戏
class HandsetGame:HandsetSoft{
public void Run(){
Console.WriteLine("运行手机游戏");
}
}
//手机通讯录
class HandsetAddressList:HandsetSoft{
public void Run(){
Console.WriteLine("运行手机通讯录");
}
}
//手机品牌
interface HandsetBrand{
protected HandsetSoft soft;
//设置手机软件
public void setHandsetSoft(HandsetSoft soft){
this.soft=soft;
}
//运行
public void Run();
}
//具体的手机品牌
class HandsetBrandN:HandsetBrand{
public void Run(){
soft.Run();
}
}
//以上代码实现了对扩展开放的原则,如果新增加手机软件或者手机品牌都只需要增加相应的类即可,
//不需要修改原有代码.
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立变化。
interface Implementor{
public void Operation();
}
class ConcreteImplementorA:Implementor{
public void Operation(){
Console.WriteLine("具体实现A的方法执行");
}
}
class ConcreteImplementorB:Implementor{
public void Operation(){
Console.WriteLine("具体实现B的方法执行");
}
}
class Abstraction{
protected Implementor implementor;
public void SetImplementor(Implementor implementor){
this.implementor=implementor;
}
public void Operation(){
implementor.Operation();
}
}
class RefinedAbstraction:Abstraction{
public void Operation(){
implementor.Operation();
}
}
//以上代码实现了:实现系统可能有多角度分类,每一种分类都有可能变化,
//那么就把这种多角度分离出来让它们独立变化,减少它们的耦合.
组合模式
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。