1.JavaBean规范
JavaBean本质上就是一种习惯性的编程风格,并不是绝对的编程规则或者语法要求,通常的习惯如下:
(1)要求满足JavaBean规范的类必须放在一个包中。
(2)要求满足JavaBean规范的类必须有无参构造方法。
(3)要求满足JavaBean规范类中的成员变量都是私有的。
(4)要求满足JavaBean规范类中提供公有的get和set方法。
(5)要求满足JavaBean规范的类支持序列化接口。
2.常用的设计原则
2.1 常用的设计原则
开闭原则
开闭原则(OCP)- 对扩展开放,对修改关闭
- 实现热插拔的效果。
- 为了软件的扩展性比较好,易于维护和升级。
如:
class Person{}
class SubPerson extends Person{}
里氏代换原则
里氏代换原则(LSP)- 任何父类可以出现的地方,子类一定可以出现。
- 子类 is a 父类。
如:
class Shape{}
class Rect extends Shape{}
void draw(Shape s){ … …}
draw(new Rect());
依赖倒转原则
依赖倒转原则(DIP)- 尽量依赖于抽象类,而不是具体实现类。
- 对子类具有强制性和规范性。
如:
abstract class Person{ void show(); }
class Student extends Person{ void show(){} }
接口隔离原则
接口隔离原则(ISP) - 尽量依赖于小接口,而不是大接口。
- 为了升级和维护方便。
如:
interface RunAnimal{
void run(); } interface FlyAnimal{
void fly(); }class Dog implements RunAnimal{
void run(){ …} } class Bird implements FlyAnimal{
void fly(){ … } }
迪米特法则
迪米特法则(DP)
- 一个实体应当尽量少与其他实体之间发生相互作用,使得系统功能模块相对独立
- 高内聚,低耦合。
- 内聚就是指将一个实体的功能尽量聚集在该实体的内部。
- 耦合就是指一个实体与其他实体之间的关联度。
合成复用原则
合成复用原则(CRP)- 尽量使用合成的方式,而不是继承。
如: class A{ void show(){ …} …
} class B extends A{
}class B{
A a; }
3.常用的设计模式
3.1 概念
被人反复使用 多数人知晓的 经过分类的 代码设计经验的总结
3.2 分类
创建模式 工厂模式 抽象工厂模式 单例模式 …
结构模式 装饰器模式 代理模式 组合模式 ...
行为模式 模板模式 观察者模式、迭代子模式 …
3.3 工厂模式
简单工厂模式 根据一个字符串 得到对应的对象
工厂方法模式 一个工厂中有多个方法(生产线)
这里有个问题 就是要得到对应的产品 必须先创建一个工厂对象
静态工厂模式 把工厂中的方法变成静态的方法
(增加生产线 就会改动工厂 这样违反开闭原则)
抽象工厂模式 指定建造工厂的规范 每个工厂生产一种产品 这样 增加新产品 就意味
着增加新的工厂 。3.4 单例模式
程序中使用时推荐使用 饿汉式
笔试中考察比较多的是 懒汉式 如果没有特殊规定 建议 饿汉式
3.5 装饰器模式
对一个方法的功能 进行增强
增强一个方法的功能 大家可以使用 继承
long timeStart = …;
super.method();
timeEnd - timeStart
3.6 代理模式 和 组合模式一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点
二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。
三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。
四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。 行为型有:
六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。
八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。
十、State,状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。
十一、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。
十二、China of Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系
十三、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。
十四、Visitor,访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。
十五、Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
十六、Memento,备忘录模式:在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 结构型有:
十七、Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。十八、Facade,外观模式:为子系统中的一组接口提供一致的界面,fa?ade提供了一高层接口,这个接口使得子系统更容易使用。 十九、Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问 二十、Adapter,适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。 二十一、Decrator,装饰模式:动态地给一个对象增加一些额外的职责,就增加的功能来说,Decorator模式相比生成子类更加灵活。 二十二、Bridge,桥模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。 二十三、Flyweight,享元模式