码迷,mamicode.com
首页 > 编程语言 > 详细

java 的23种设计模式 之单身狗和隔壁老王的故事

时间:2015-11-13 01:08:21      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

觉得代码写的别扭了,回头翻翻java 的23种设计模式。
today,额,这么晚了,困了。就弄个最简单的单例模式吧。

单例模式:俗称单身狗

package singleton;

public class SingleTon {

private static final class SingleTonBuilder {

private static SingleTon singleTon = new SingleTon();

}

private SingleTon() {

}

public static SingleTon getInstance() {

return SingleTonBuilder.singleTon;

}

}

 
其实什么懒汉,饿汉,痴汉模式之类的都不用管,只要会这一种就够了。 

跟singleton 很像的一个模式三single call 。
中文解释就单调用,通俗的说就是只有某人才能使用某物。
给个场景,HumanWang, WangWife

老王,和老王老婆。
老王老婆有一项技术叫mkl,但是这项技术只能老王才能用,
 
先看老王:
 

package singlecall;

public class HumanWang {

        //口号,是王妃么?

private boolean isWf = false;

        
        //防止老王的儿子之类(子类重写)冒充

public final boolean isWf() {

return isWf;

}

        //获取王妃,

private WangWife getWangWife() {

WangWife vivian;

isWf = true;//是王妃

vivian = WangWife.getWangWife(this);

isWf = false;//获得王妃后其他的都不是了。

return vivian;

}

public static void main(String[] args) {

HumanWang hw=new HumanWang();

WangWife vivian =hw.getWangWife();

vivian.mkl();

}

}  

在看老王老婆,俗称王妃:

 
package singlecall;

public class WangWife {

           //身体是自己的,不能随便给人看

private WangWife() {

}

        //当然谁都能企图获取王妃的身体,不过王妃只给老王一个人,如果有人用修改字节码方式强xx,
        //这个只能报警了。

public static WangWife getWangWife(HumanWang hw) {

WangWife vivian;
                //有没有人 

if (hw == null) {

vivian = null;

} else {
                        //口号正确不正确 

if (hw.isWf()) {

vivian = new WangWife();

} else {

vivian = null;

}

}

return vivian;

}

        //王妃的技术。

public void mkl() {

System.out.println("啪啪啪");

}

}

这样就只有老王才能获取王妃,然后王妃施展技术。
ps 后记:
不要说我代码写的污,咱用的是面向对象的思想。 



java 的23种设计模式 之单身狗和隔壁老王的故事

标签:

原文地址:http://my.oschina.net/lxy4java/blog/529681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!