1_设计模式七大原则

2020-12-22  本文已影响0人  真是个点子王

一、单一职责原则

二、 接口隔离原则

// 未优化
interface Interface{
    public void function1();
    public void function2();
    public void function3();
}
class Class1 implements Interface{

    @Override
    public void function1() {
        System.out.println("I have function1");
    }

    @Override
    public void function2() {
        System.out.println("I have function2");
    }

    @Override
    public void function3() {
        /*
        * void 
        * */
    }
}
class Class2 implements Interface{

    @Override
    public void function1() {
        /*
        * void
        * */
    }

    @Override
    public void function2() {
        /*
         * void
         * */
    }

    @Override
    public void function3() {
        System.out.println("I have function3");
    }
}
// 优化后
interface Interface1{
    public void function1();
    public void function2();
}

interface Interface2{
    public void function3();
}
class Class1 implements Interface1{

    @Override
    public void function1() {
        System.out.println("I have function1");
    }

    @Override
    public void function2() {
        System.out.println("I have function2");
    }
    
}
class Class2 implements Interface2{
    
    @Override
    public void function3() {
        System.out.println("I have function3");
    }
}

三、依赖倒转原则

// 方式一
public class DependecyInversion {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());
    }
}

class Email{
    public String getInfo(){
        return "电子邮件的信息: Hello,world";
    }
}

// 完成Person接收消息的功能
// 方式1分析
// 1.简单,比较容易想到
// 2.如果获取对象是 微信、短信,则新增类,同时Person也要增加相应的接收方法
// 3.解决思路:引入一个抽象的接口IReceiver,表示接收者,这样Person类与接口IReceiver发生依赖
class Person{
    public void receive(Email email){
        System.out.println(email.getInfo());
    }
}


// 方式二
public class DependecyInversion2 {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());
    }
}

class Email implements IReceiver{

    @Override
    public String getInfo(){
        return "电子邮件的信息: Hello,world";
    }
}

interface IReceiver{
    public String getInfo();
}

class Person{
    public void receive(Email email){
        System.out.println(email.getInfo());
    }
}

依赖传递的三种方式

依赖倒转原则的注意事项和细节

四、里氏替换原则

五、开闭原则

六、迪米特法则

七、合成复用原则

上一篇 下一篇

猜你喜欢

热点阅读