设计模式之我见01-设计原则

什么是设计模式

        设计模式是前人对编程设计经验的总结。

指导思想

                可维护性:修改功能,需要改动的地方越少,可维护性越高

                可复用性:代码可以被以后复用,写出自己总结的类库

                可扩展性: 添加功能无需修改原来的代码

                灵活性:代码接口可以灵活调用

设计模式七大基本原则

        单一职责原则:只能有一个引起类变化的原因。Java的设计中很多接口就是单一职责的,比如接口Callable,Runnable,Closeable等都是单一职责。

        开闭原则: 对扩展开放,对修改关闭。基于抽象和多态

        里氏替换原则:所有使用父类的地方,必须能够透明的使用子类对象。继承必须确保超类所拥有的性质在子类中仍然成立。里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。

        依赖倒置原则: 面向接口编程,依赖抽象而不是依赖具体。其核心思想是:要面向接口编程,不要面向实现编程。依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则。

  1. 每个类尽量提供接口或抽象类,或者两者都具备。
  2. 变量的声明类型尽量是接口或者是抽象类。
  3. 任何类都不应该从具体类派生。
  4. 使用继承时尽量遵循里氏替换原则。

        接口隔离原则: 每个接口应该承担独立的角色,避免子类实现不需要实现的方法,需要对客户提交最小的接口。

        以学生成绩管理系统为例,学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等 3 个模块中。

        迪米特法则:尽量不要和陌生人说话,和其它类的耦合度变低。也叫最少知道原则。迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。

        在运用迪米特法则时要注意以下 6 点。

  1. 在类的划分上,应该创建弱耦合的类。类与类之间的耦合越弱,就越有利于实现可复用的目标。
  2. 在类的结构设计上,尽量降低类成员的访问权限。
  3. 在类的设计上,优先考虑将一个类设置成不变类。
  4. 在对其他类的引用上,将引用其他对象的次数降到最低。
  5. 不暴露类的属性成员,而应该提供相应的访问器(set 和 get 方法)。
  6. 谨慎使用序列化(Serializable)功能。
    public class UserService{
        @Autowired
        private UserDao userDao;
        
        public void check(){
            List<User> userList = userDao.getAll();
            for (User user: userList) {
                System.out.println(user.toString());
            }
        }
    }
    

    按照定义,UserService和Use不是直接朋友,不符合迪米特法则,但是User类是UserDao类的直接朋友。

        改进

public class UserService {
    @Autowired
    private UserDao userDao;

    public void check(){
        userDao.printAll();
    }
}
class UserDao{
    
    public  List<User>  getAll(){
        return userMapper.selectAll();
    }
    public void  printAll(){
        List<User> userList = getAll();
        for (User user: userList) {
            System.out.println(user.toString());
        }
    }
    
} 

 

 合成复用原则:它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值