程序设计七大原则:
1.单一职责原则
设计的一个类应该专门的负责对应一件事情
2.开放封闭原则
一、开放封闭原则是面向对象所有原则的核心
二、1.对功能扩展开放 2.面向修改代码封闭
三、需求改变时,在不改变软件实体源代码(类、接口、方法等)的前提下,通过扩展功能,使其满足新的需求
3.依赖倒置原则
1.高层模块不应该依赖于底层模块,两个都依赖于抽象类。
高层模块指的是调用者,底层模块就是指被调用者,或者框架。
2.抽象不应该依赖细节,细节应该依赖于抽象。我们要面向接口编程,而不是面向实现编程
3.依赖倒置原则的本质就是通过抽象 使各个类或者模块实现彼此独立,互不影响,实现模块之间的松耦合
4.里氏替换原则:
1.子类可以替换父类
2.所有引用父类对象的地方,都可以使用其子类型代替
3.如果S是T的子类型,则T类型的对象可以替换为S类型的对象
5.接口分离原则:
1.客户端不应该依赖它不需要的接口
2.一个类对另一个类的依赖应该建立在最小接口上。
3.接口尽量细分,不要再一个接口中放很多方法。
6.迪米特原则: 设计类的原则
1.它要求一个对象应该对其他对象有最少的了解(最好只用一些接口或者方法去操作,让类本身去对状态等属性进行保存)
2.降低类之间的耦合
3.这是一个对类创建相关的原则和法则
7.合成复用原则:
1.尽量使用对象组合,而不是继承来达到复用。
可能会有些父类的方法,新生成的子类可能用不到,这个时候就有可能会导致一些问题
继承会出现三个问题:
1.破坏了系统的封装性,基类发生改变,子类的实现也可能会发生改变
2.子类如果不需要某些方法,则系统的耦合性会变高
继承是静态的,不能再程序运行时发生改变
创建型设计模式
1.单例模式
有两种模式
1.懒汉模式:在类的声明阶段直接声明一个静态成员变量并初始化赋空间
2.饿汉模式:做声明判断,当静态成员为null的时候初始化,当其不为null的时候直接给出这个静态成员。
懒汉模式直接不推荐,大概率会造成资源的浪费。饿汉模式的话,在多线程情况下可能会出问题,是线程不安全的。调用方法之前要判断有没有类的实例,如果没有,则创建并返回,如果有了就要返回之前的,而不是直接通过这个静态对象是否为null来判断,这个时候就需要枷锁来解决多线程下,单例不安全的问题。
实现起来也很简单,就创建一个lock来实现就可以了(c#),lock是c#的一个语法糖,相当于一个自带的mutex互斥锁,就不用自己写了。也就是说lock()锁定的代码段当有一个线程正在执行的时候会强行占用这一段,其他进程再来调用这段代码的时候就会进行阻塞,前一个线程结束这段执行的时候,这段代码才会放开,交由排队等待的线程执行这段代码。
new指令会执行三个命令 :
1.在内存中开辟空间
2.执行构造函数,创建对象
3.把空间只想我们创建的对象
一般是 执行 123,但是有时候可能会执行 132,这个时候这个new指令就有可能会出问题,当并发量大的时候,就有可能会出问题,会在执行1 3 2 的时候,有可能会返回一个错误的(空)对象