java几种常用设计模式简单示例Word文件下载.docx
- 文档编号:19100883
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:40
- 大小:34.48KB
java几种常用设计模式简单示例Word文件下载.docx
《java几种常用设计模式简单示例Word文件下载.docx》由会员分享,可在线阅读,更多相关《java几种常用设计模式简单示例Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
在内部产生本类的实例化对象
public
getInstance()
{
通过静态方法返回instance对象
return
instance;
}
Singleton()
将构造方法封装为私有化
void
print()
System.out.println("
Hello
World!
!
"
);
SingletonDemo
main(String
args[])
s1
null;
声明对象
s2
s3
Singleton.getInstance();
取得实例化对象
s1.print();
调用方法
s2.print();
s3.print();
}
[java]viewplaincopyprint?
调用方法
classSingleton{
privatestaticSingletoninstance=newSingleton();
//在内部产生本类的实例化对象
publicstaticSingletongetInstance(){//通过静态方法返回instance对象
returninstance;
}
privateSingleton(){//将构造方法封装为私有化
publicvoidprint(){
System.out.println("
HelloWorld!
}
publicclassSingletonDemo{
publicstaticvoidmain(Stringargs[]){
Singletons1=null;
//声明对象
Singletons2=null;
Singletons3=null;
s1=Singleton.getInstance();
//取得实例化对象
s2=Singleton.getInstance();
s3=Singleton.getInstance();
s1.print();
//调用方法
s2.print();
s3.print();
一、单例模式的介绍
Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点
二、单例模式的实现
实现的方式有如下四种:
/**
*
单例模式的实现:
饿汉式,线程安全
但效率比较低
*/
SingletonTest
SingletonTest()
final
SingletonTest();
getInstancei()
/**
但效率比较低
/**
*
*单例模式的实现:
饿汉式,线程安全但效率比较低
*/
publicclassSingletonTest{
privateSingletonTest(){
privatestaticfinalSingletonTestinstance=newSingletonTest();
publicstaticSingletonTestgetInstancei(){
饱汉式,非线程安全
if
(instance
==
null)
null)
饱汉式,非线程安全
privatestaticSingletonTestinstance;
publicstaticSingletonTestgetInstance(){
if(instance==null)
instance=newSingletonTest();
线程安全,但是效率非常低
@author
vanceinfo
*
synchronized
线程安全,但是效率非常低
vanceinfo
*线程安全,但是效率非常低
*@authorvanceinfo
*
publicstaticsynchronizedSingletonTestgetInstance(){
线程安全
并且效率高
getIstance()
(SingletonTest.class)
2.工厂设计模式
程序在接口和子类之间加入了一个过渡端,通过此过渡端可以动态取得实现了共同接口的子类实例化对象。
interface
Animal
定义一个动物的接口
say();
说话方法
Cat
implements
定义子类Cat
@Override
say()
覆写say()方法
我是猫咪,喵呜!
Dog
定义子类Dog
我是小狗,汪汪!
Factory
定义工厂类
getInstance(String
className)
a
定义接口对象
("
Cat"
.equals(className))
判断是哪个子类的标记
Cat();
通过Cat子类实例化接口
Dog"
Dog();
通过Dog子类实例化接口
a;
FactoryDemo
main(String[]
args)
Factory.getInstance(args[0]);
通过工厂获取实例
(a
判断对象是否为空
a.say();
interfaceAnimal{//定义一个动物的接口
publicvoidsay();
//说话方法
classCatimplementsAnimal{//定义子类Cat
@Override
publicvoidsay(){//覆写say()方法
classDogimplementsAnimal{//定义子类Dog
classFactory{//定义工厂类
publicstaticAnimalgetInstance(StringclassName){
Animala=null;
//定义接口对象
if("
.equals(className)){//判断是哪个子类的标记
a=newCat();
//通过Cat子类实例化接口
}
a=newDog();
//通过Dog子类实例化接口
returna;
publicclassFactoryDemo{
publicstaticvoidmain(String[]args){
a=Factory.getInstance(args[0]);
//通过工厂获取实例
if(a!
=null){//判断对象是否为空
a.say();
3.代理设计模式
指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。
比如生活中的通过代理访问网络,客户通过网络代理连接网络(具体业务),由代理服务器完成用户权限和访问限制等与上网相关的其他操作(相关业务)。
Network
定义Network接口
browse();
定义浏览的抽象方法
Real
真实的上网操作
browse()
覆写抽象方法
上网浏览信息!
Proxy
代理上网
network;
Proxy(Network
network)
{//
设置代理的真实操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 常用 设计 模式 简单 示例