美文网首页
设计模式的6大原则

设计模式的6大原则

作者: wervy | 来源:发表于2020-01-15 11:57 被阅读0次

    软件编程的总原则:高内聚,低耦合。

    单一职责原则

    就是一个类只负责一项职责,尽量做到类仅有一个引起它变化的原因。

    里氏替换原则

    所有引用基类的地方必须能透明地使用其子类的对象

    里氏替换原则为良好的继承定义了一个规范,一句简单的定义包含了4层含义。

    • 子类必须完全实现父类的方法
    • 子类可以有自己的个性
    • 覆盖或实现父类的方法时输入参数可以被放大
    • 复写或实现父类的方法时,输出结果可以被缩小
      实例如下:
    /**
     * 枪支的抽象类
     */
    public abstract class AbstractGun {
    
        public abstract void shoot();
    }
    
    /**
     * 手枪
     */
    public class Handgun extends AbstractGun{
        @Override
        public void shoot() {
    
            Log.i("射击----","手枪射击....");
        }
    }
    
    /**
     * 步枪
     */
    public class Rifle extends AbstractGun{
        @Override
        public void shoot() {
            Log.i("射击----","步枪开始射击....");
        }
    }
    
    /**
     * 士兵
     */
    public class Soldier {
    
        private AbstractGun gun;
    
        //给士兵一支枪
        public void setGun(AbstractGun gun){
            this.gun = gun;
        }
    
        public void killEnemy(){
    
            Log.i("杀敌---","士兵开始杀敌....");
        }
    }
    
    /**
     * 场景
     */
    public class Client {
    
        public static void main(String[] args){
    
            Soldier sanMao = new Soldier();
            sanMao.setGun(new Handgun());
            sanMao.killEnemy();
        }
    }
    
    
    

    在这个实例中,士兵可以选择手枪,也可以选择步枪

    注意 在类中调用其他类时,务必使用父类或接口,也就是示例中Solider类中,setGun方法,传入的参数是AbstractGun

    依赖倒置原则

    • 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的
    • 接口或抽象类不依赖于实现
    • 实现类依赖接口或抽象类

    实例代码如下:

    public interface ICar {
    
        //是汽车就能跑
        public void run();
    }
    
    public interface IDriver {
    
        public void drive(ICar car);
    }
    
    /**
     * 司机
     */
    public class Driver implements IDriver{
        @Override
        public void drive(ICar car) {
            car.run();
        }
    }
    
    public class BMW implements ICar{
        @Override
        public void run() {
    
            Log.i("汽车----","宝马车开始运行....");
        }
    }
    
    public class Client {
    
        public static void main(String[] args){
    
            IDriver zhangsan = new Driver();
            ICar benz = new Benz();
            zhangsan.drive(benz);
        }
    }
    
    
    
    

    接口隔离原则

    • 一个接口只服务于一个子模块或业务逻辑
    • 通过业务逻辑压缩接口中的public方法,接口时常去回顾,尽量让接口达到“满身筋骨肉”,而不是肥嘟嘟的一大堆方法
    • 已经被污染的接口,尽量去修改,若变更风险大,则采用适配器模式进行转化处理
    • 了解环境,拒绝盲从。每个项目或产品都有特定的环境因素。

    迪米特法则

    也称为最少知识法则:一个对象应该对其他对象有最少的了解。

    开闭原则

    软件实体应该对扩展开放,对修改关闭。


    参考资料《设计模式之禅》

    相关文章

      网友评论

          本文标题:设计模式的6大原则

          本文链接:https://www.haomeiwen.com/subject/jxozactx.html