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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

觉得代码写的别扭了,回头翻翻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 shiGeng = false;

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

public final boolean isShiGeng () {

return shiGeng ;

}

        //获取王妃,

private WangWife getWangWife() {

WangWife vivian;

shiGeng = true;//是王妃,石更了。

vivian = WangWife.getWangWife(this);

shiGeng = 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.isShiGeng ()) {

vivian = new WangWife();

} else {

vivian = null;

}

}

return vivian;

}

        //王妃的技术。

public void mkl() {

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

}

}

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



转载于:https://my.oschina.net/lxy4java/blog/529681

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用python学线性代数_二项式过程| 使用Python的线性代数

使用python学线性代数When we flip a coin, there are two possible outcomes as head or tail. Each outcome has a fixed probability of occurrence. In the case of fair coins, heads and tails each have the same probability of 1/2. In addition, there are cases in …

工作中常见的 6 种设计模式,你用过几种?

前言 哈喽,大家好。平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中…

这12款idea插件,能让你代码飞起来!

前言基本上每个程序员都会写代码,但写代码的速度不尽相同。为什么有些人,一天只能写几百行代码?而有些人,一天可以写几千行代码?有没有办法,可以提升开发效率,在相同的时间内,写出更…

node js 开发网站_使用Node JS开发网站

node js 开发网站You will have your own fully functional website running on "localhost" after going through this article. 阅读完本文后,您将在“ localhost”上运行自己的功能齐全的网站 。 Basic knowledge of JavaScript and HTML is a prereq…

Java:LocalDate / LocalDateTime加减时间

在线API参考:LocalTime (Java Platform SE 8 ) 方法介绍 方法1方法1说明plusYears(long years) minusYears(long years) 返回增加/减少了年数的副本plusMonths(long months) minusMonths(long months)返回增加/减少了月数的副本plusWeeks(long weeks) minusWeeks(…

集合 List 分片的 5 种实现

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错&a…

使用它给 ​xxl-job 添加任务,太爽了

xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题。我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置执行器ex…

dubboSPI机制浅谈

2019独角兽企业重金招聘Python工程师标准>>> 本文重点讲述SPI机制,从jdk和dubbo 1、jdk spi机制 2、dubbo spi实现 首先spi是什么? SPI是为某个接口寻找服务实现的机制。为了实现在模块装配的时候能不在…

彻底搞懂 SpringBoot 中的 starter 机制

前言我们都知道,Spring的功能非常强大,但也有些弊端。比如:我们需要手动去配置大量的参数,没有默认值,需要我们管理大量的jar包和它们的依赖。为了提升Spring项目的开发效率,简化一些配置,Sprin…

Java 中验证时间格式的 4 种方法

大家好,今天咱们来讲一下,Java 中如何检查一个字符串是否是合法的日期格式?为什么要检查时间格式?后端接口在接收数据的时候,都需要进行检查。检查全部通过后,才能够执行业务逻辑。对于时间格式&#xff0c…

Redis 实现分布式锁的 7 种方案

前言日常开发中,秒杀下单、抢红包等等业务场景,都需要用到分布式锁。而Redis非常适合作为分布式锁使用。本文将分七个方案展开,跟大家探讨Redis分布式锁的正确使用方式。如果有不正确的地方,欢迎大家指出哈,一起学习一…

css复选框样式_使用CSS样式复选框

css复选框样式Introduction: 介绍: Sometimes we want to develop a website or web page that would contain a form and through that form, we want to get some information from the user. Now that information could be of any type depending on the kind …

javascript对话框_JavaScript中的对话框

javascript对话框JavaScript对话框 (JavaScript Dialog Boxes) Dialog boxes are a great way to provide feedback to the user when they submit a form. In JavaScript, there are three kinds of Dialog boxes, 对话框是向用户提交表单时提供反馈的好方法。 在JavaScript中…

排查死锁的 4 种工具,秀~

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程)&#xf…

MySQL 常见的 9 种优化方法

大家好,我是磊哥!今天给大家分享一些简单好用的数据库优化方式!1、选择最合适的字段属性Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的…

oracle中dbms_DBMS中的实例和架构

oracle中dbms1)实例 (1) Instances) What is the Instance? If we look towards it in real life, we refer instance as an occurrence of something at a particular moment of time. In Database Management system, there are a lot of changes occurring over time to th…

过滤器和拦截器的 5 个区别!

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)过滤器(Filter)和拦截器(Interceptor)都是基于 AOP(Aspec…

面试突击第一季完结:共 91 篇!

感谢各位读者的支持与阅读,面试突击系列第一季到这里就要和大家说再见了。希望所写内容对大家有帮助,也祝你们找到满意的工作。青山不改,细水长流,我们下一季再见!91:MD5 加密安全吗?90&#xf…

SpringBoot官方热部署和远程调试神器

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款SpringBoot官方的热部署工具spri…

MySQL 优化:Explain 执行计划详解

昨天中午在食堂,和部门的技术大牛们坐在一桌吃饭,作为一个卑微技术渣仔默默的吃着饭,听大佬们高谈阔论,研究各种高端技术,我TM也想说话可实在插不上嘴。聊着聊着突然说到他上午面试了一个工作6年的程序员,表…