记录学习 Java 设计模式(一)
来源:互联网 发布:淘宝客现在的生存状况 编辑:程序博客网 时间:2024/06/08 02:34
记录学习 Java 设计模式(一)
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
本文写于本人初步接触设计模式之时,同 时中间会穿插的记录一些学习的设计原则。对于设计模式与原则并没有一个系统的分类,属于记录学习中遇到的问题和看法,希望等给看到的朋友带来启发,大家共同进步。同 时欢迎大家能多多指出在下的不足之处。
开—闭合原则
开—闭合原则(Open Close Principle)最重要的主旨就是对扩展开放,对修改关闭即扩展已有的系统、增加新的行为,但对于已有的抽象层不再修改。概括的说就是:抽象化 与 对可变性的封装。
设计模式
单例设计模式(singleton)
在代码中复用率高的地方,如:Scanner( )等,可以设计成单例。或与回收站类似的功能,不论用户在桌面上删除还是在C盘中删除,我们都会在使用到回收站,如果我们没调用一次就要 new Recycle( ) 那么我们的程序就会显的十分的臃肿,所以我们同样可以使用单例设计。
我们来举个栗子:
//饿汉式 private static Recycle recycle = new Recycle(); private Recycle() { } public static Recycle getInstance() { return recycle; }
那我们测试一下结果:
Recycle recycle1 = Recycle.getInstance(); Recycle recycle2 = Recycle.getInstance(); System.out.println( recycle1 == recycle2 );
以上会返回一个true,证明我们实际上是用到了一个Recycle。
//懒汉式 private static Recycle recycle = new Recycle(); private Recycle() { } public static Recycle getInstance() { return recycle; }
同样懒汉式的记过也是样的。
简单工厂(引申)
当我们想要拿到一个水果时,作为消费者的我们不需要亲自去采摘水果,而是直接从商贩那里购买就可以了,同理,当我们需要一辆汽车时,我们不需要参与它的组装,只需要去使用它。
那么这就引申出了工厂的概念,也就是工厂模式。
我们举个栗子:
首先我们需要一个接口Fruit:
public interface Fruit { }
将其接入Apple类 与 Banana类中:
public class Banana implements Fruit { public Banana() { System.out.println("Hello Banana"); }}public class Apple implements Fruit { public Apple() { System.out.println("Hello Apple"); }}
然后我们再创建一个工厂:
public class FruitFactory { public static Fruit make( String name ) { if("apple".equals(name)) { return new Apple(); }else if("banana".equals(name)) { return new Banana(); }else { System.out.println("Sorry NULL"); return null; } }}
那么我们在使用时就可以通过这样的方式去使用它:
Fruit f1 = FruitFactory.make("apple"); Fruit f2 = FruitFactory.make("banana");
我们可以在创建工厂中加载很多的信息,但在用户的操作中是看不到这些操作的,这就构成了一个黑盒。我们是面向对象去操作,而不是面向过程。
同样,我们也可以看到,以上的代码不符合开—闭合原则,当我们新加入另一个水果葡萄(Grape)类时,我们需要拆解工厂中的 else if 所以这只是一个引申,引出 工厂模式 与 抽象工厂模式。
- 记录学习 Java 设计模式(一)
- 记录学习 Java 设计模式(二)
- java设计模式学习记录
- java设计模式学习笔记(一)-- 简述设计模式
- java设计模式学习(一)
- Java设计模式学习(一)
- java 设计模式学习解读(一)
- Java 设计模式学习笔记(一)
- java设计模式学习一
- java设计模式学习(一)-工厂方法模式1
- java设计模式学习(一)-工厂方法模式2
- Java学习笔记 - 设计模式(一)工厂模式
- java设计模式学习之(一)策略模式
- 设计模式学习记录
- 设计模式学习记录
- 设计模式学习记录
- 设计模式学习记录
- java设计模式记录
- Python爬虫——解决urlretrieve下载不完整问题且避免用时过长
- hibernate 实现多表连接查询
- 在此处打开命令改为CMD或Powershell
- JAVA特殊符号--移位符号
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)
- 记录学习 Java 设计模式(一)
- 51Nod
- Revit二次开发——空间曲线
- 【笔记】如何把GBK的文本格式转换为UTF-8格式
- 安卓简易笔记app
- alloc_chrdev_region解析
- 最长上升子序列
- Linux常用命令
- 用Transparent Gateway(TG)从SQL SERVER中提取数据到Oracle