设计模式--6个设计原则

1、单一原则

简单定义:一个类只负责一个一项职责。

解决办法:当遇到违反单一职责的情况时,最直观的做法就是—
a) 将原来的类分成两个或者多个类;推荐
缺点:就是开销增大了,体现在:①分解类开销,②客户端修改开销
所以,有时为了某些要求,也会违反单一职责原则,如下,
b)修改相应的职责方法;
优点:特别简单(面向过程)
缺点:一旦职责发生变化,就需要不停的修改该方法
c)给当前类添加一个或多个新的方法;
优点:方法还是遵循单一职责原则,而且原来的方法不需要修改
缺点:可能造成方法过多,情况变复杂。

注意事项:所以在类简单,方法少的情况下可以违背单一原则,否则,还是遵守的好,没有绝对的单一职责,一旦需求变更,职责粒度分细,原来的符合单一职责的也会因此而不符合单一原则。
适用范围:面向对象以及面向模块设计。

2、里式替换原则

(源于一个来自买买提学院姓里的一个女士提出来的一套理论)
简答定义:每个引用基类的地方都必须能够透明引用其子类的对象。
—-也就是说,尽量不要重载父类中已经实现的方法,这样不至于导致原有父类的功能异常。

解决办法:子类不要重新父类已经实现了的方法,如果要重新父类的该方法,选用依赖、聚合、组合等关系代替。
其深层含义体现在:
1)子类不能覆盖父类的非抽象方法;
2) 当子类重载父类方法时,形参输入参数更加宽松;eg. int →double
3) 当子类 方法重载父类方法,返回值要比父类更加严格。
口诀:‘’前松后紧‘’。。

注意事项:遵守这一原则可以最大程度的代码功能保证不会出现错误,其他不做要求。

3、依赖倒置原则—“面向接口编程”

定义:高层模块不依赖于底层模块,二者都需要依赖于他们的抽象; 细节应该依赖于抽象,而不是反过来。

解决办法:让底层类们实现接口或者抽象类,让原来依赖底层类的通过接口与底层类发生练习。(如下图所示,A依赖于B,然后又依赖于C, A可以通过接口I和B,C发生联系)

注意事项:变量声明类型尽量使用抽象类和接口,底层也是如此,继承时当然需要遵守里氏
替换原则。

4、接口隔离原则—“分解细化接口”

定义:客户端不应该依赖他不要的接口,也就是说依赖建立在最小接口上。

解决办法:将原有的接口拆分为几个分散的接口。

注意事项:
1)不要过度分解,造成接口混乱。
2)为依赖接口的类分配其需要的方法,不要暴露其他方法(隐藏起来),提高高内聚,减少对外交互。
3)接口隔离与单一职责不同,一个注重细节实现,一个注重整体。

5、迪米特原则—最少知道

定义:类与类之间的耦合越低越好。(涉及到具体业务就是架构中的分层原理,相邻的层之间有关联,不要和非相邻层过于耦合,相邻的特点体现为:出现对应类的成员变量、方法参数、方法返回值,而非局部变量)

解决办法:利用public对外公布必须的方法,其他不做公布,

注意事项:降低耦合度需要慎重,具体情况中,适量即可,别为了符合最少知道原则,做很复杂的中介(或者说分层),早曾系统复杂/结构不够清晰。

6、开闭原则

定义:软件在升级维护等过程中,由于需要对软件的代码进行修改,这往往会对旧有代码引入错误,这样就要对整个功能进行重构,对原有代码都要进行测试。

解决办法:扩展为主,修改为辅,即就是抽象构建整体,实现扩展细节,扩展时通过派生一些类去实现,而非修改去实现。

注意事项:对抽象构建整体要求高,需要一定的前瞻性,

总结如下:
1. 单一职责 实现职责单一
2. 里氏替换 继承结构不可破坏
3. 依赖倒置 面向接口
4. 接口隔离 接口设计精简
5. 最少知道 类之间的耦合要低
6. 开闭原则 扩展可以,修改拒绝

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一组经过实践验证的面向对象设计原则模式,可以帮助开发人员解决常见的软件设计问题。下面是常见的23种设计模式: 1. 创建型模式(Creational Patterns): - 工厂方法模式(Factory Method Pattern) - 抽象工厂模式(Abstract Factory Pattern) - 单例模式(Singleton Pattern) - 原型模式(Prototype Pattern) - 建造者模式(Builder Pattern) 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter Pattern) - 桥接模式(Bridge Pattern) - 组合模式(Composite Pattern) - 装饰器模式(Decorator Pattern) - 外观模式(Facade Pattern) - 享元模式(Flyweight Pattern) - 代理模式(Proxy Pattern) 3. 行为型模式(Behavioral Patterns): - 责任链模式(Chain of Responsibility Pattern) - 命令模式(Command Pattern) - 解释器模式(Interpreter Pattern) - 迭代器模式(Iterator Pattern) - 中介者模式(Mediator Pattern) - 备忘录模式(Memento Pattern) - 观察者模式(Observer Pattern) - 状态模式(State Pattern) - 策略模式(Strategy Pattern) - 模板方法模式(Template Method Pattern) - 访问者模式(Visitor Pattern) 4. 并发型模式(Concurrency Patterns): - 保护性暂停模式(Guarded Suspension Pattern) - 生产者-消费者模式(Producer-Consumer Pattern) - 读写锁模式(Read-Write Lock Pattern) - 信号量模式(Semaphore Pattern) - 线程池模式(Thread Pool Pattern) 这些设计模式可以根据问题的特点和需求来选择使用,它们提供了一些可复用的解决方案,有助于开发高质量、可维护且易于扩展的软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值