网站的二级菜单怎么做,设计师网页设计作品,西宁做网站君博先进,网站域名备案与解析简介 将抽象部分与它的实现部分分离#xff0c;使它们可以独立变化。 UML图#xff1a;  应用场景#xff1a; 
系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀 
示例…简介 将抽象部分与它的实现部分分离使它们可以独立变化。 UML图  应用场景 
系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀 
示例 手机厂商和软件厂商 实现类软件 
public interface Software {/*** 运行*/void run();
}1.1 具体实现类 
public class MusicSoftware implements Software{Overridepublic void run() {System.out.println(运行 音乐软件);}
}public class GameSoftware implements Software {Overridepublic void run() {System.out.println(运行 游戏软件);}
}抽象类手机 
public abstract class Phone {protected Software software;public Phone(Software software) {this.software  software;}/*** 使用*/public abstract void use();}2.1 实现类 
public class AndroidPhone extends Phone {public AndroidPhone(Software software) {super(software);}Overridepublic void use() {System.out.println(安卓手机....);software.run();}
}public class IOSIphone extends Phone {public IOSIphone(Software software) {super(software);}Overridepublic void use(){System.out.println(苹果手机....);software.run();}
}运行 
public class Main {public static void main(String[] args) {Software musicSoftware  new MusicSoftware();Software gameSoftware  new GameSoftware();new AndroidPhone(musicSoftware).use();new IOSIphone(musicSoftware).use();new AndroidPhone(gameSoftware).use();new IOSIphone(gameSoftware).use();}
}总结 
优点 实现抽象和实现的分离提高系统灵活性具备良好的扩展性符合开闭原则 缺点 增加系统的理解和设计难度  
VS 适配器模式 
适用阶段不同 桥接模式用于设计的前期精细化的设计让系统更加灵活适配器模式用于设计完成之后发现类、接口之间无法一同工作需要进行填坑 应用场景 适配器模式经常用于在第三方API协同工作的场合