首页 > 其他 > 详细

设计模式七大原则

时间:2020-12-14 23:59:33      阅读:43      评论:0      收藏:0      [点我收藏+]

设计模式

七大设计原则

一、单一职责原则

??一个类文件只负责编写它所相关的类的功能。例如:User类, 该类负责描述用户; 那么,UserDao类,则只应该负责与User有关的方法的编写, User用户的CRUD等操作;如果还有Order, 那么有关Order的CRUD操作应该另外写进OrderDao类中。

二、接口隔离原则

??个人理解,即最小功能接口实现,实现类只需要实现自己需要的功能方法即可, 其他无关的功能方法不应该存在。
??

public interface Func {
  void test1();
  void test2();
  void test3();
}  

public interface Func1 {
  void test1();
  void test2();
}   

public interface Func2 {
  void test1();
  void test3();
}  

??以上, 3个接口, 如果类A指想要test1(), test2(), 则最好实现接口 Func1;如果想要test1(), test3(), 则应该实现接口 Func2。
??不应该直接实现接口Func, 因为这样会造成类A要多实现一个或多个无关的方法, 二违反接口隔离的原则。

三、依赖倒置

??高层不应该依赖低层, 二者都应该依赖其抽象。
??细节依赖抽象, 抽象不应该依赖细节。
??因此, 接口或抽象类的设计, 是为了设计规范用的, 而具体的实现细节,在应该在实现类中完成。
??关于依赖倒置的具体如下:

public class VerseTest {  
    public static void main(String[] args) {
       Person p = new Person();
    //   p.drive(new Car());
       p.drive(new Bike());
    }  
}  

class Person {
    public void drive(Vehicle vehicle) {
        vehicle.run();
    }
}
interface Vehicle {
    void run();
}
class Bike implements Vehicle {
    public void run() {
        System.out.println("自行车跑的较慢");
    }
}
class Moto implements Vehicle {
    public void run() {
        System.out.println("摩托车跑的比较快");
    }
class Car implements Vehicle {
    public void run() {
        System.out.println("小汽车跑的很快");
    }
}   

??以上即为依赖倒置的测试代码, 这个里面很明显是用到了Java中的多态的思路,父引用指向子类的实例。

四、开闭原则

??要求对于功能提供者, 提供扩展动作, 对于功能使用者,关闭修改动作。
??对于具体的功能实现, 要尽可能地提供更多可扩展操作; 对于功能的调用, 则尽可能地不予修改, 保持原样。
??以上说法, 必须以已有功能不受影响为前提。

五、里氏替换

??对于基类出现地地方, 他的子类可以在此处透明使用。
??个人理解, 对于父类引用的地方, 同样, 其子类也应该在此处被引用。 感觉与依赖倒置原则有些类似。
??里氏替换, 可能主要用于继承里较多一些。 但是如果使用继承, 则类之间地耦合关系会比较强, 例如, 如果父类有所修改, 会影响到它所有地子类, 造成可能出现额错误。 因此, 一般不是很建议使用继承, 而是使用组合, 聚合等方式。

六、迪米特法则

??最少知道法则,一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

七、合成复用原则

??原则是尽量使用合成/聚合的方式,而不是使用继承。

设计模式七大原则

原文:https://www.cnblogs.com/bigfish-blog/p/14136168.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!