Java复习打卡day27

本文深入探讨了Java设计模式中的四个重要原则:依赖倒置原则,通过司机开车案例解释如何使用接口降低耦合;接口隔离原则,通过美女定义标准的例子说明将复杂接口拆分为简单接口的重要性;迪米特原则,以明星、粉丝和公司合作的场景展示了如何通过中间类减少类间直接联系;最后介绍了单例模式,用皇上案例阐述确保类只有一个实例的方法。这些原则和模式有助于提高代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置导学

依赖倒置原则
    概述:为减少代码之间的耦合性,尽量使用接口或是抽象类。
    下面我将通过司机开不通车的案例来向大家展示。

接口隔离原则
    概述:根据实际开发需求将复杂,多功能的接口分解成简单,实现功能少的接口。
    下面我见通过美女定义标准的案例来向大家展示。

迪米特原则
    概述:为不同的类之间相互联系的问题创建中间类,建立联系桥梁。
    下面我将通过明星和粉丝及公司见面合作的案例来向大家展示。


单例模式
    为了满足某些需要,通常我们会将一些变量定义成常量。这就是单例设计模式。
    下面,我将通过皇上的案例来向大家展示。

依赖倒置原则

public interface Alldriver {
    public void drive(ICar car);
}
public interface ICar {
    public void run();
}
public class Benc implements ICar {
    @Override
    public void run() {
        System.out.println("奔驰车飞驰-------------");
    }
}

public class Hmw implements ICar {
    @Override
    public void run() {
        System.out.println("宝马车飞驰-------------");
    }
}
public class Clients {
    public static void main(String[] args) {
        Driver driver = new Driver();
        driver.drive(new Hmw());
        //这里体现了依赖倒置原则!
        //在Driver 的drive方法里面传入ICar类型的对象,这样他所有的子接口创建的对象都能传进来,提高了司机的功能多样性。
        driver.drive(new Benc());
    }
}
public class Driver implements Alldriver {
    @Override
    public void drive(ICar car) {
        System.out.println("司机开车");
        car.run();
    }
}

接口隔离原则

public interface Butity {
    void goodLook();
    void goodTemper();
    void goodFigure();
}
//一个接口中包含了太多的方法,代码的耦合度太高,淫荡改为多个接口实现这些方法。
/**
 *这里建议改为:
 * public interface Temper{
 *     void goodTemper();
 * }
 * public interface Figure{
 *     void goodFigure();
 * }
 * public interface Look{
 *     void goodLook();
 * }
 * 这样改完,上面的Butity接口就不需要了。
 *
 */
public class Girl1 implements Butity{

    @Override
    public void goodLook() {
        System.out.println("脸蛋倾国倾城---------");
    }

    @Override
    public void goodTemper() {
        System.out.println("爱everything!");
    }

    @Override
    public void goodFigure() {
        System.out.println("很瘦,但该有肉的地方都有肉!");
    }
}
public interface Search {
    void search(Butity girl);
}
public class Searcher implements Search{

    @Override
    public void search(Butity girl) {
        System.out.println("发现一位美女!");
        girl.goodFigure();
        girl.goodLook();
        girl.goodTemper();
    }

}
public class Test {
    public static void main(String[] args) {
        Searcher p = new Searcher();
        p.search(new Girl1());
    }
}

迪米特原则

public class Star {
    /**
     * 本案例中,明星类并没有直接和粉丝、公司接触,而是通过经纪人在其中充当桥梁
     * 实现见面和合作。
     * 这便是迪米特原则!
     */
    class Agents{
        Star1 p = new Star1("迪丽热巴");
        void meet(Fans fans){
            System.out.println("" + fans.getName() + "和" + p.getName() + "见面!");
        }
        void cooperate(Company c){
            System.out.println("" + c.getName() + "和" + p.getName() + "艺人商谈合作事项!");
        }
    }
    class Star1{
        private String name;

        public Star1(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }
    }

    class Fans{
        private String name;

        public Fans(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    class Company{
        private String name;

        public Company(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }


    public static void main(String[] args) {
        Star s = new Star();
        Agents a = s.new Agents();
        a.meet(s.new Fans("小九"));
        a.cooperate(s.new Company("中央电视台"));

    }
}

DP单例模式

public class Emperor {
    private static Emperor emperor = null;
    private Emperor() {
    }
    public static Emperor getInstance(){
        if(emperor == null){
            emperor = new Emperor();
        }
        return emperor;
    }

    /**
     * 从这个方法之后,皇帝的对象就不再改变了
     */
    public void say(){
        System.out.println("我是皇帝xxx,有事启奏,无事退朝----------");
    }
}

public class Minister {
    void meet() {
        //大臣上朝
        Emperor emperor = Emperor.getInstance();
        //每次大臣上朝的对象都是同一个皇上
        for (int i = 0; i < 5; i++) {
            System.out.println("大臣们上朝!");
            emperor.say();
        }
    }

}
public class Test {
    public static void main(String[] args) {
        Minister m = new Minister();
        m.meet();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值