一、适配器设计模式

简单来说,就是通过一个间接类来选择性的来覆写一个接口

interface Window{public void open() ; // 打开窗口public void close() ;    // 关闭窗口public void icon() ; // 最小化public void unicon() ;    // 最大化
}
abstract class WindowAdapter implements Window{public void open(){}public void close(){}public void icon(){}public void unicon(){}
};
class MyWindow extends WindowAdapter{public void open(){System.out.println("打开窗口!") ;}
};
public class AdpaterDemo{public static void main(String args[]){Window win = new MyWindow() ;win.open() ;}
}

二、工厂设计模式

设计一个选择吃橘子或者苹果的例子,一般设计时可能会直接在主类中实例化对象,但通过工厂设计模式通过一个间接类可以减少主类中(客户端)的代码量

interface Fruit{public void eat() ;
}
class Apple implements Fruit{public void eat(){System.out.println("吃苹果。。。") ;}
};
class Orange implements Fruit{public void eat(){System.out.println("吃橘子。。。") ;}
};
class Factory{  // 工厂类public static Fruit getFruit(String className){Fruit f = null ;if("apple".equals(className)){f = new Apple() ;}if("orange".equals(className)){f = new Orange() ;}return f ;}
};
public class InterDemo{public static void main(String args[]){Fruit f = Factory.getFruit(args[0]) ;if(f!=null){f.eat() ;}}
}

三、代理设计模式

以讨债为例

interface Give{public void giveMoney() ;
}
class RealGive implements Give{public void giveMoney(){System.out.println("把钱还给我。。。。。") ;}
};
class ProxyGive implements Give{    // 代理公司private Give give = null ;public ProxyGive(Give give){this.give = give ;}public void before(){System.out.println("准备:小刀、绳索、钢筋、钢据、手枪、毒品") ;}public void giveMoney(){this.before() ;this.give.giveMoney() ; // 代表真正的讨债者完成讨债的操作this.after() ;}public void after(){System.out.println("销毁所有罪证") ;}
};
public class ProxyDemo{public static void main(String args[]){Give give = new ProxyGive(new RealGive()) ;give.giveMoney() ;}
};

转载于:https://www.cnblogs.com/walkthehorizon/p/4388141.html

java学习之三种常用设计模式相关推荐

  1. matlab矩阵运算_MATLAB基础学习之三种基本运算

    MATLAB学习之三种运算 MATLAB软件 一.基本算数运算 在MATLAB中有两种矩阵运算:右除/和左除.如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),AB等效于inv(A)*B.注:i ...

  2. [转载] java实现四种常用排序算法

    参考链接: 用Java排序 四种常用排序算法 ##注:从小到大排 ##冒泡排序## 特点:效率低,实现简单 思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有 ...

  3. 23种常用设计模式的UML类图

    23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...

  4. JAVA正则表达式4种常用功能 [转]

    JAVA正则表达式4种常用功能    正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持  下面简单的说下它的4种常用功能: 查询: 以下是代码片段:  String str ...

  5. JAVA 正则表达式4种常用的功能

    JAVA 正则表达式4种常用的功能 正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: 以下是代码片段: String str=&q ...

  6. java 中几种常用数据结构

    原文地址:http://blog.csdn.net/u010947402/article/details/51878166 JAVA中常用的数据结构(java.util. 中) Java中有几种常用的 ...

  7. javaEE Design Patter(1)初步了解23种常用设计模式

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. ...

  8. JAVA中几种常用JSON库性能比较

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:飞污熊 xncoding.com/2018/01/09/java/jsons.html 本 ...

  9. java中四种常用的引用类型_java中四种引用类型

    JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用(Strong Reference).软引用(Soft Reference).弱引用(Weak Reference).虚引用 ...

最新文章

  1. win10家庭版远程桌面连接出现身份验证错误
  2. BZOJ4589: Hard Nim(FWT 快速幂)
  3. 继承属性public private
  4. 若5G的速度不够:那6G和16K是必然么?
  5. 64位下搭载汇编环境
  6. linux dns resolver,如何解决Linux in-kernel dns_resolver问题
  7. 【MySQL】明明加了索引,为何不生效?
  8. IT行业最重要的四件宝--我的实习体会
  9. 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识
  10. 学生管理系统(VB)——连接数据库
  11. 杰奇python采集器_linux下安装杰奇,实现关关采集器远程采集详细教程
  12. 多张tif图片合成一张tif图片
  13. #Linux中的GCC编程# 20170731 C培训作业
  14. VG验证码识别框架2.2 免费识别验证码
  15. 【RabbitMQ】基础四:路由模式(Routing)
  16. 计算机显示另外一个用户登录,电脑两个用户怎么在欢迎界面只显示一个?
  17. 宁愿吃生活的苦,也不愿坚持学习
  18. 计算机专业排名211大学排名,计算机专业大学排名,计算机专业强的211!
  19. Visual Studio 2008 项目安装和部署
  20. N4,C1,C4汽车(前、后装)芯片NEXTCHIP品牌。

热门文章

  1. Java编程在线学习靠谱吗?能学会吗?
  2. C#学生信息管理系统
  3. 采用光线跟踪绘制场景 c++_虚拟演播室的跟踪系统以及色键器应要选择什么型号...
  4. kafka使用_kafka使用Interceptors实现消息端到端跟踪
  5. nginx定制header返回信息模块ngx_headers_more
  6. 遍历Linux kernel的链表时删除元素的方法
  7. sklearn综合示例5:多分类分类器
  8. oracle 之 COMMENT
  9. 因果推断在阿里文娱用户增长中的应用
  10. ElasticSearch 使用Java Api访问集群