2023.12.6日报

发布时间 2023-12-06 18:35:59作者: Arkiya
今天主要学习了设计模式的七大原则 以下内容都为自己学习完后的总结和盲敲,也是测试一下自己到底记住了多少 首先是单一职责原则,指的是某一个类的功能应该专一,而不应该多而杂 什么意思呢,例如我们写一个javaweb,应该分不同的功能类,各司其职,例如有连接数据库的DBUtil、处理数据的Dao,接收数据的Servlet,封装的Bean等 而不应该写一个大类把所有的内容都囊括进去 然后是开闭原则,开闭原则是最重要的,是对拓展开放对修改关闭,指的是如果一个系统要拓展新的功能 它应该通过继承实现新的子类进行添加,而不应该修改原本的代码 然后是里氏替换原则,简单来说就是所有父类对象都应该可以替换成为子类对象,这样其实也是开闭原则的一种实现方式 例如,我们某一个图形页面的按钮是圆形的,我现在希望他变成方形的,那么如何设计呢? 可以在主页面中,定义一个抽象的按钮类,根据里氏替换原则,我们可以把按钮类的各种子类注入到其中,这样也符合开闭原则 然后是依赖倒转原则,它指的是两个类有交集的时候,例如我们定义一个Person类,他需要一个接收的类型,email,这个是具体的类,它不应该和这个类产生关系 而应该定义一个抽象的接受类,让Person实例化这个抽象的接受类,这样即使我们希望修改接收方式不再使用email,也不需要修改Person的代码 然后是接口隔离原则,它指的是一个接口应该实现专一的方法,避免不需要的类实现到不需要的方法 例如有一个Animal类,它定义了一些动物的行为,吃饭睡觉飞行啃骨头等,那么例如一个子类Dog和一个子类Bird,就会出现Dog明明没有飞行这个功能但由于继承关系 不得不获取到,鸟类对啃骨头也同理,这样的情况下就需要把Animal拆分。 然后是合成服用原则,它指的是多用关联少用继承,例如一个Car类拥有一个发电机,可以在Car中实例化一个抽象的engine对象,然后实现,而不是让Car去继承发动机类实现 因为子类算作特殊的父类,根据实际意义,车不可能是特殊的发动机 然后是迪米特法则,它指的是不要和陌生人说话,什么意思呢?例如我们还是一个Car类,它应该只关心它要做的,可以定义一个跑的方法,而例如我现在需要给他实现一个加油的方法 那么Car中需要写一个方法实现加油,这时候就应该用一个加油类,里边实现加油的方法,Car类中只实例化加油类的对象,而不是直接在Car中编写加油方法,当你在Car中实例化了加油的对象 加油类就成为了Car类的朋友,也就满足了迪米特法则 学习时间四小时