iOS高效开发者

设计模式六大原则

2023-02-11  本文已影响0人  Tinyspot

面向对象

类比活字印刷术,可维护、可扩展、可复用和灵活性好

1. 单一职责原则

示例:针对不同的用户类型提供差异化服务

public class VideoService {
    public void watch(String userType) {
        if ("VIP".equals(userType)) {
            System.out.println("VIP会员,视频清晰度1080P");
        } else if ("Common".equals(userType)) {
            System.out.println("普通会员,视频清晰度720P");
        } else if ("Guest".equals(userType)) {
            System.out.println("访客,视频清晰度480P");
        }
    }
}
@Test
public void test() {
    VideoService videoService = new VideoService();
    videoService.watch("VIP");
    videoService.watch("Common");
}

使用单一职责原则改善代码,把展示职责和管理职责分离开,都实现同一个抽象依赖,设计一个顶层接口

public interface IVideoService {
    void definition();
    void advertisement();
}

public class VipVideoServiceImpl implements IVideoService {
    @Override
    public void definition() {
        System.out.println("视频清晰度1080P");
    }
    @Override
    public void advertisement() {
        System.out.println("VIP会员无广告");
    }
}
public class GuestVideoServiceImpl implements IVideoService {
    @Override
    public void definition() {
        System.out.println("视频清晰度480P");
    }

    @Override
    public void advertisement() {
        System.out.println("访客观看 60s 广告");
    }
}
@Test
public void test() {
    IVideoService videoService = new VipVideoServiceImpl();
    videoService.definition();
    videoService.advertisement();
}

2. 开闭原则

实现开闭原则的核心思想就是面向抽象编程

3. 依赖倒置原则

  1. 高层模块不应该依赖低层模块,二者都应该依赖抽象
  2. 抽象不应该依赖细节,细节应该依赖抽象

通俗的说,就是要针对接口编程,不要对实现编程

示例:
比如单一职责原则,修电脑时内存坏了,不应该成为更换CPU的理由,它们各自的职责是明确的。
再比如开放-封闭原则,内存不够只要插槽足够就可以添加,硬盘不够可以用移动硬盘等,PC的接口是有限的,所以扩展有限,软件系统设计得好,却可以无限地扩展
比如依赖倒置原则,无论主板、CPU、内存、硬盘都是在针对接口设计的,如果针对实现来设计,内存就要对应到具体的某个品牌的主板,那就会出现换内存需要把主板也换了的尴尬

4. 里氏代换原则

子类型必须能够替换掉它们的父类型

里氏替换原则是实现开闭原则的重要方式之一

5. 接口隔离原则

6. 迪米特法则

示例:
校长想知道一个班级的总分和平均分
不该让校长直接管理学生,校长应该管理老师,由老师提供相应的学生信息查询服务,校长类只需要调用使用即可,而不需要了解每一位学生的分数

上一篇下一篇

猜你喜欢

热点阅读