• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
第二天半
博客园    首页    新随笔    联系   管理    订阅  订阅

设计模式_03_依赖倒置原则:面向接口编程

设计模式_03_依赖倒置原则:面向接口编程

问题:

 

package designPatternOf_03;
/**
 * 依赖倒置原则:面向接口编程
 *         妈妈讲故事:
 * 问题:如果给妈妈一份报子,就不会读了
 */
public class DependencyInversionPrinciple_01 {
    public static void main(String[] args) {
        Mother mom=new Mother();
        Book_01 book=new Book_01();
        mom.talk(book);
    }
}

class Book_01{
    public String getContent(){
        return "很久很久以前,有个阿拉伯故事...";
    }
}

class Mother{
    public void talk(Book_01 book){
        System.out.println("妈妈开始讲故事:");
        System.out.println(book.getContent());
    }
}

 

 

解决:

package designPatternOf_03;
/**
 * 依赖倒置原则:面向接口编程
 *         妈妈讲故事:
 * 问题:如果给妈妈一份报子,就不会读了
 * 解决:引入一个接口:IReader(读物:只要是带字的都可以读):Moter类与Book类没有依赖,依赖传递给了IReader
 * 传递依赖关系有三种:
 *         1、方法接口传递,2、构造方法传递,3、setter方法传递
 * Spring的依赖传递运用很多
 * 实际编程中:
 *         1、底层模块尽量都要有抽象类或接口
 *         2、变量声明类型尽量是抽象类或接口
 *         3、使用继承时遵循里氏替换
 */
public class DependencyInversionPrinciple_02 {
    public static void main(String[] args) {
        Mother_02 mom=new Mother_02();
        //给一本书,就读书
        Book_02 book=new Book_02();
        mom.talk(book);
        //给报子,就读报子
        NewsPaper_02 np=new NewsPaper_02();
        mom.talk(np);
    }
}
/**
 * 母亲
 */
class Mother_02{
    public void talk(IReader reader){
        System.out.println("妈妈开始讲故事:");
        System.out.println(reader.getContent());
    }
}
/**
 * 读物
 */
interface IReader{
    public String getContent();
}
/**
 * 书
 */
class Book_02 implements IReader{
    public String getContent(){
        return "很久很久以前,有个阿拉伯故事...";
    }
}
/**
 * 报子
 */
class NewsPaper_02 implements IReader{
    public String getContent(){
        return "林书豪大胜尼克斯";
    }
}

 

posted @ 2015-04-24 10:04  第二天半  阅读(278)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3