通过封装,继承,多态,把程序耦合度降低,使代码可维护,可扩展,可复用,灵活性更好。
设计模式的原则
单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
开放-封闭原则:对于扩展是开放的,对于更改是封闭的。
依赖倒转原则:实际上就是针对接口编程,而不要对实现编程
- 高层模块不应该依赖低层模块。两个都应该依赖抽象
- 抽象不应该依赖细节,细节应该依赖抽象。
里氏代换原则:子类型必须能替换掉它们的父类型。
策略模式(Strategy)
它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。
装饰模式(Decorator)
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活
代理模式(Proxy)
对其他对象提供一种代理以控制对这个对象的访问。
建造者模式(Builder)
建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
状态模式(State)
适配器模式(Adapter)
将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
备忘录模式(Memento)
简单工厂模式
简单功能工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件,动态实例化相关的类。对于客户端来说,去除了与具体产品的依赖。
工厂方法模式(Factory Method), 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行。