1. // 手机软件
    2. public abstract class HandsetSoft {
    3. public abstract void Run();
    4. }
    5. // 手机通讯录
    6. public class HandsetAddressList extends HandsetSoft {
    7. @Override
    8. public void Run() {
    9. System.out.println("运行手机通讯录");
    10. }
    11. }
    12. // 手机游戏
    13. public class HandsetGame extends HandsetSoft {
    14. @Override
    15. public void Run() {
    16. System.out.println("运行手机游戏");
    17. }
    18. }
    19. // 手机品牌
    20. public abstract class HandsetBrand {
    21. protected HandsetSoft soft;
    22. // 设置手机软件
    23. public void SetHandsetSoft(HandsetSoft soft){
    24. this.soft=soft;
    25. }
    26. public abstract void Run();
    27. }
    28. // 手机品牌M
    29. public class HandsetBrandM extends HandsetBrand {
    30. @Override
    31. public void Run(){
    32. soft.Run();
    33. }
    34. }
    35. // 手机品牌N
    36. public class HandsetBrandN extends HandsetBrand {
    37. @Override
    38. public void Run(){
    39. soft.Run();
    40. }
    41. }
    42. public class Test {
    43. public static void main(String[] args) {
    44. HandsetBrand handsetBrand;
    45. // 手机品牌N
    46. handsetBrand = new HandsetBrandN();
    47. handsetBrand.SetHandsetSoft(new HandsetGame());
    48. handsetBrand.Run();
    49. handsetBrand.SetHandsetSoft(new HandsetAddressList());
    50. handsetBrand.Run();
    51. // 手机品牌M
    52. handsetBrand = new HandsetBrandM();
    53. handsetBrand.SetHandsetSoft(new HandsetGame());
    54. handsetBrand.Run();
    55. handsetBrand.SetHandsetSoft(new HandsetAddressList());
    56. handsetBrand.Run();
    57. }
    58. }

    image.png
    image.png
    image.png