zoukankan      html  css  js  c++  java
  • 设计模式_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 "林书豪大胜尼克斯";
        }
    }
  • 相关阅读:
    用iptables 实现本地端口转发
    hive查询
    IOS畅销榜
    java多线程系列7-停止线程
    java多线程系列6-阻塞队列
    java多线程系列5-死锁与线程间通信
    java多线程系列4-线程池
    java多线程系列3-线程同步
    java多线程系列2-线程控制
    java多线程系列1--线程实现与调度
  • 原文地址:https://www.cnblogs.com/zjsy/p/4452617.html
Copyright © 2011-2022 走看看