代码先锋网 代码片段及技术文章聚合

java中javaBean规范、常见的设计模式和设计原则

1.JavaBean规范

JavaBean本质上就是一种习惯性的编程风格,并不是绝对的编程规则或者语法要求,通常的习惯如下:

   (1)要求满足JavaBean规范的类必须放在一个包中。
   (2)要求满足JavaBean规范的类必须有无参构造方法。
   (3)要求满足JavaBean规范类中的成员变量都是私有的。
   (4)要求满足JavaBean规范类中提供公有的getset方法。
   (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,享元模式
版权声明:本文为weixin_39671217原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39671217/article/details/78006171

智能推荐

Java常见的几种设计模式

原文链接:https://www.cnblogs.com/xiaofengwang/p/11255678.html 单例模式 简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。 getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以不要错误的理解成多个对象。...

Java常见的设计模式

1.单例模式 作用:保证整个应用中某个实例 饿汉模式 懒汉模式 区别:饿汉模式在加载类时就会创建实例,所以加载类比较慢,但运行时获取对象较快,线程安全。懒汉模式则相反,加载类较快,获取对象时较慢,线程不安全。 拓展点:懒汉模式线程不安全点在于当有多个线程并行调用 getInstance() 的时候,就会创建多个实例。这就引出了双重检验锁。 使用volatile修饰的原因:instance = ne...

java中常见的设计模式

简单工厂/静态工厂 单例模式 分为饿汉式,懒汉式 饿汉式 懒汉式 静态代理 抽象卖票方法 火车站卖票具体方法 中介 可对卖票方法进行增强 客户 另外 cjlib代理、jdk代理和静态代理很像 spring aop也是基于此实现的...

java 设计模式原则(中)

java 设计模式原则(中) 依赖倒转原则 依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置)的中心思想是面向接口编程 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中...

猜你喜欢

Java设计模式和原则

一、设计模式 1、单例模式 一个类只有一个实例,且该类能自行创建这个实例的一种模式 适用场景 (1)懒汉式实现 (2)饿汉式实现 2、观察者模式 多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新 也称发布-订阅模式,模型-视图模式 (1)实现 3、装饰模式 不改变现有对象结构情况下,动态给对象增加一些职责(额外功能)...

Java常见设计模式

java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 简单工厂模式 抽象工厂模式 单例...

Java常见设计模式

单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点 懒汉式 调用: Singleton.getInstance().method(); 优点:延迟加载(需要的时候才去加载),适合单线程操作 缺点: 线程不安全,在多线程中很容易出现不同步的情况,如在数据库对象进行的频繁读写操作时。 饿汉模式 在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快 双重线程检查模式 volatile...

Java常见设计模式

前言 设计模式的概念最早来源于建筑大师 Alexander 的《建筑的永恒方法一书》,书中的观点实际上也适用于软件设计领域。Alexander 是这样描述模式的: 模式是一条有三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。 软件设计模式通常被分成三类: 创建型:创建对象时,不再直接实例化对象,而...

Java常见设计模式

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式: 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern); 抽象工厂模式(Abstrac...