Java设计原则及设计模式个人总结

七大设计原则

1.开闭原则,开闭原则是总纲,我们做系统首先需要满足开闭原则。
软件实体应对扩展开放,而对修改关闭。
2.单一职责原则,用于控制类的粒度大小,就是我们重构时,将一个复杂的类拆分为多个类。尽可能地将一个类职责单一化。
3.接口隔离原则,使用多个专门的接口,而不使用单 一的总接口,即客户端不应该依赖那些它不需要的接口。这个是关于接口定义时的指导方针,可以对比类的单一职责原则。就是要求将复杂的接口,拆分为多个功能单一的接口。比如我们的java集合框架。
4.依赖倒转原则,抽象不应该依赖于细节,细节应当依 赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
5.里氏代换原则,所有引用基类(父类)的地方必须能透 明地使用其子类的对象。
原则4和5,在我们实际编码中对应的就是,定义抽象层(抽象类或接口),关联和依赖的时候,是依赖于抽象层,实际运行时,替换为真实的子类或实现类。
6.迪米特法则,一个软件实体应当尽可能少地与其他实体发生相互作用,不要和陌生人说话。迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。
7.合成复用原则,尽量使用对象组合,而不是继承来达到复用的目的。 就是我们常规的,某个类中定义别的类作为成员变量,或者入参,或者局部变量,或者静态方法的调用。比如,我们常规的需要建立一个http连接,然后发送消息时。我们直接调用httpClient类中的建立连接,设置消息等操作。
总结:开闭原则是总纲,是目的;单一职责要求类简单,接口隔离要求接口简单,依赖倒置要求面向接口编程,里氏替换要求面向抽象编程,不破坏继承结构,迪米特法则要求低耦合,合成复用要求少用继承多用依赖。
核心的一句话:所有问题都可以通过新增一个中间层来得到解决,如果不行,那就再多加一个中间层。比如:我们的策略模式中,定义抽象接口(中间层),具体的算法类;或者适配器模式中,我们新增了适配器作为中间层。

设计模式

分类:
创建型:一共五种,就是关于对象的“创建”
简单工厂,抽象工厂,构建者模式,原型模式,单例模式
结构型:一共七种
适配器,装饰,代理,外观,桥接,组合,享元
行为型:一共11种
模板方法,策略,观察者,中介,状态,责任链,命令,访问者,解释器,备忘录,迭代器

工厂模式的演进:
简单工厂模式示例代码:

public class SimpleFactory{
    public Object getBean(String name){
     if("cat".equals(name)){
      return new Cat();
     }else if("cow".equals(name)){
      return new Cow();
     }。。。。。。
    }
   }

缺点:不符合开闭原则,不利于扩展;类功能太繁重,职责不单一。
改进:1.spring使用反射,通过反射创建对象。
2.套用上面说的核心的那句话,我们增加中间层(也就是我们下面的抽象类AnimalFactory)。常规的消除if…else…的手段,定义抽象的类或接口,然后每个分支对应一个具体的子类或实现类。
方式二的演变就是我们的工厂方法设计模式(特点:
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例)。示例代码如下:

public abstract class AnimalFactory{
    public abstract Object getBean();
}
public class catFactory extends  AnimalFactory {
    public Object getBean(){
      return new Cat();
    }
}
public class DogFactory extends  AnimalFactory {
    public Object getBean(){
      return new Dog();
    }
}

你可能感兴趣的:(JAVA)