(四十一)、设计模式
来源:互联网 发布:matlab矩阵逻辑运算 编辑:程序博客网 时间:2024/04/27 22:14
设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
单例设计模式
构造方法私有,提供创建对象的方法,保证对象单一
懒汉式
调用时才会创建对象
//懒汉式public class King { private static King k; // 构造方法私有 private King() { } public static King getInstance() { if (k == null) { k = new King(); } return k; }}
饿汉式
类初始化时创建一个对象
//饿汉式public class King2 { private static King2 k2 = new King2(); private King2() { } public static King2 getInstance() { return k2; }}
SingleDemo.java
//单例设计模式public class SingleDemo { public static void main(String[] args) { System.out.println(King.getInstance()); System.out.println(King.getInstance()); System.out.println(King2.getInstance()); System.out.println(King2.getInstance()); }}
静态工厂设计模式
定义一个人类接口,具有说话的功能
public interface Human { void speak();}
八卦炉用来制作人
public class BaGuaLu { private static BaGuaLu baGuaLu = new BaGuaLu(); private BaGuaLu() { } public static BaGuaLu getInstance() { return baGuaLu; } public Human makePerson(String peopleColor) { Human human = null; switch (peopleColor) { case "黑": human = new Human() { @Override public void speak() { System.out.println("我是黑种人"); } }; break; case "白": human = new Human() { @Override public void speak() { System.out.println("我是白种人"); } }; break; case "黄": human = new Human() { @Override public void speak() { System.out.println("我是黄种人"); } }; break; default: break; } return human; }}
女娲开始造人,传递要造的肤色给八卦炉
//静态工厂设计模式public class NvWa { public static void main(String[] args) { BaGuaLu baGuaLu = BaGuaLu.getInstance(); Human black = baGuaLu.makePerson("黑"); black.speak(); Human white = baGuaLu.makePerson("白"); white.speak(); Human yellow = baGuaLu.makePerson("黄"); yellow.speak(); }}
上面的八卦炉就像一个工厂,调用里面的方法就能得到想要的东西
0 0
- (四十一)、设计模式
- Oracle12C--参数模式(四十一)
- 日拱一卒(四十一)
- (四十一)auto命令
- 凤凰涅磐(四十一-四十五)
- C核心技术手册(四十一)
- 杂花生树(四十一)
- 每日英语阅读(四十一)
- <Android 基础(四十一)> ExpandableListView
- 技术分享连载(四十一)
- 软件工程视频学习笔记(四十一)
- Struts2 文件上传,下载,删除(四十一)
- PyGobject(四十一)布局容器之Box
- 《Motion Design for iOS》(四十一)
- 微信小程序把玩(四十一)canvas API
- tensorflow学习笔记(四十一):control dependencies
- 系统学习深度学习(四十一)--PVANet
- ConfigReader(四十一)—— ReadOtherItemConfig
- XML文件解析
- java第一周
- React Native的WebStorm基本设置
- Ubiquitous Religions ---并查集入门
- 阶乘 hdu 1124 (Factorial)
- (四十一)、设计模式
- chromium中HTTP网络资源的加载过程
- xml解析pull
- dll工程中如何生成lib文件
- android zipalign
- java 时间格式转换
- ubuntu下不能识别安卓设备
- JAVA简单Factory模式
- USB OTG插入检测识别