java:常用的两种设计模式(单例模式和工厂模式)
一、单例模式:即一个类由始至终只有一个实例。有两种实现方式
(1)定义一个类,它的构造方法是私有的,有一个私有的静态的该类的变量在初始化的时候就实例化,通过一个公有的静态的方法获取该对象。
Java代码
1. //单例模式的第一种形式
2. public class Singleton01 {
3.
4. // 私有的静态属性
5. private static Singleton01 instance = new Singleton01();
6.
7. // 私有的构造方法
8. private Singleton01() {
9. }
10.
11. // 公有的静态方法
12. public static Singleton01 getInstance() {
13. return instance;
14. }
15. }
(2)改进后的
Java代码
1. public class Singleton02 {
2.
3. // 私有的静态的类变量
4. private static Singleton02 instance = null;
5.
6. // 私有的构造方法
7. private Singleton02() {
8. }
9.
10. // 静态的公有的方法
11. public static Singleton02 getInstance() {
12. if (instance == null) {
13. instance = new Singleton02();
14. }
15. return instance;
16. }
17. }
二、工厂模式:生产不同对象的公共接口
(1) 产品接口
Java代码
1. //产品接口
2. public interface Product {
3.
4. }
(2)产品接口的实现类
Java代码
1. //洗衣机
2. public class Washer implements Product {
3.
4. public Washer(){
5. System.out.println("洗衣机被制造了!");
6. }
7. }
Java代码
1. //空调
2. public class AirCondition implements Product {
3.
4. public AirCondition(){
5. System.out.println("空调被制造!");
6. }
7. }
(3)工厂接口
Java代码
1. //工厂接口
2. public interface Factory {
3.
4. //生产产品
5. Product produce(String productName);
6.
7. }
(4)工厂的实现类
Java代码
1. //实现工厂
2. public class TestFactory implements Factory {
3.
4. //生产产品
5. public Product produce(String productName) {
6. if (productName.equals("Washer")) {
7. return new Washer();
8. }
9. if (productName.equals("AirCondition")) {
10. return new AirCondition();
11. }
12. return null;
13. }
14.
15. public static void main(String[] args) {
16. TestFactory testFactory = new TestFactory();
17. testFactory.produce("Washer");
18. testFactory.produce("AirCondition");
19. }
20. }
java:常用的两种设计模式(单例模式和工厂模式)的更多相关文章
- Java常用的几种设计模式
本来想写点spring相关的东西的,想来想去,先写点设计模式的东西吧 什么是设计模式?套用百度百科的话解释吧 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设 ...
- java23种设计模式——三、工厂模式
源码在我的github和gitee中获取 工厂模式 工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在J ...
- PHP面向对象-设计模式 单例模式 简单工厂模式 工厂方法模式
1.单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例.即一个类只有一个对象实例. 要实现每一个类只有一个实例,就需 ...
- 【Unity与23种设计模式】抽象工厂模式(Abstract Factory)
GoF中定义: "提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类." 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例 ...
- 两种设计模式(1)==>>“简单工厂”
我们以做一个计算器为例,给大家介绍简单工厂的应用: 效果: 这里我们使用 继承 ,虚方法, 简单工厂的设计模式来完成 首先,我们除了搭好窗体外,我们应该把我们的一些类准备好: 1.计算的父类Calcu ...
- 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...
- Spring主要用到两种设计模式
Spring主要用到两种设计模式 1.工厂模式 Spring容器就是实例化和管理全部Bean的工厂. 工厂模式可以将Java对象的调用者从被调用者的实现逻辑中分离出来. 调用者只关心被调用者必须满足的 ...
- java23种设计模式——四、原型模式
源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...
- java23种设计模式——五、建造者模式
源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...
随机推荐
- android 模拟器无法ping通主机
很多时候我们通过adb 连接 android 模拟器调试网络程序,也许你能直接访问浏览器,浏览网站,但是却无法ping同局网的一个机器,比如: # ping www.sina.com ...
- poj 1035 Spell checker ( 字符串处理 )
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16675 Accepted: 6087 De ...
- jQuery调用WebService
1.编写4种WebService方法 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBindi ...
- 【云计算】Docker容器不能修改hosts文件怎么解决?
参考资料: http://bbs.csdn.net/topics/390871429 http://tieba.baidu.com/p/4295556808 http://stackoverflow. ...
- 用thinkphp连接mysql数据库
一.设置mysql数据库的参数 thinkphp\Application\Home\Conf\config.php <?php return array( //'配置项'=>'配置值' ' ...
- [Oracle] SQL*Loader 详细使用教程(5)- 典型例子
本文介绍SQL*Loader在实际使用过程中经常用到的典型例子. 1. 表中的列比数据文件的列要少怎么办? 假设一个csv的文件如下: a1,a2,a3,a4 b1,b2,b3,b4 c1,c2,c3 ...
- [CALayer release]: message sent to deallocated instance iOS内存过度释放问题
[CALayer release]: message sent to deallocated instance iOS内存过度释放问题 解决方式: 1:先找到过度释放的 内存指针 开启-僵尸模式:xc ...
- Selenium WebDriver问题--Internet Explorer保护模式设置问题
在用WebDriver中打开Internet Explorer访问百度的是,报下面错误: org.openqa.selenium.remote.SessionNotFoundException: Un ...
- spring 发送邮件问题
public void sendEmail() throws Exception { JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); ...
- Mybatis-Generator自动生成代码
在使用mybatis开发的过程中,通常我们会给数据库的每张表编写对应的model.dao.mapping,虽然很简单,但是工作量很大,所以通常会使用代码生成器Mybatis-Generator帮我们自 ...