基础几个设计模式
来源:互联网 发布:sql insert 单引号 编辑:程序博客网 时间:2024/06/04 19:39
Java中设计模式总结
第一种:工厂方法模式(工厂模式)
01:普通工厂模式
概念:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建
1.建立共通接口
public interface Sends {
public String send();
}
2.创建实现类
public class EmailSend implements Sends{
@Override
public String send() {
return"emailSend执行..........";
}
}
第二个实现类:
public class SmsSend implements Sends{
@Override
public String send() {
return"sms Send执行..........";
}
}
3.创建工厂类
public class SendFactory {
public Sends sendsMethed(Stringtype){
if("email".equals(type)){
return new EmailSend();
}else if("sms".equals(type)){
return new SmsSend();
}else{
return null;
}
}
}
4.创建测试类
public class Test {
public static void main(String[] args) {
SendFactoryfactory=new SendFactory();
Sendssend=factory.sendsMethed("email");
System.out.println(send.send());
}
}
缺点:如果传递字符串错误,将不能正确创建对象。
02:多个工厂方法模式
概念:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
1.其他不变,修改工厂类如下:
public class SendFactory {
public Sends emailMethod(){
return new EmailSend();
}
public Sends smsMethod(){
return new SmsSend();
}
}
2.修改测试类
public class Test {
public static void main(String[] args) {
SendFactoryfactory=new SendFactory();
Sendssend=factory.emailMethod();
System.out.println(send.send());
}
}
缺点:需要创建工厂类实例
03:静态工厂方法模式
概念:将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
1.修改工厂类:
public class SendFactory {
public static Sends emailMethod(){
return new EmailSend();
}
public static Sends smsMethod(){
returnnew SmsSend();
}
}
2.修改测试类:
public class Test {
public static void main(String[] args) {
Sendssend=SendFactory.emailMethod();
System.out.println(send.send());
}
}
第二种:抽象工厂模式
概念:创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
1.建立共通接口
public interface Sends {
public String send();
}
2.创建实现类
public class EmailSend implements Sends{
@Override
public String send() {
return"emailSend执行..........";
}
}
第二个实现类:
public class SmsSend implements Sends{
@Override
public String send() {
return"sms Send执行..........";
}
}
3.创建接口
public interface Provider {
public Sendsproduce();
}
4.创建多个工厂类,并且实现接口
public class EmailFactory implements Provider{
@Override
public Sends produce() {
return new EmailSend();
}
}
第二个工厂类
public class SmsFactory implements Provider{
@Override
public Sends produce() {
return new SmsSend();
}
}
5.测试类
public class Test {
public static void main(String[] args) {
Providerprovider= new EmailFactory();
Sendssend=provider.produce();
System.out.println(send.send());
}
}
优点:新添功能,直接添加新的实现类,实现Sends接口,然后创建一个工厂类实现Provider接口就ok了,无需改动现有代码。扩展性较好。
第三种:单例模式
概念:是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
第四种:建造者模式
概念:将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。
1、2步同上一样。
3.创建工厂
public class Builder {
private static List<Sends> list=new ArrayList<Sends>();
public void emailMethod(intcount){
for (inti = 0; i < count; i++) {
list.add(new EmailSend());
}
}
public void smsMethod(intcount){
for (inti = 0; i < count; i++) {
list.add(new SmsSend());
}
}
public static List<Sends> getList() {
return list;
}
public static void setList(List<Sends>list) {
Builder.list = list;
}
}
4.创建测试类
public class Test {
public static void main(String[] args) {
Builderbuilder=new Builder();
builder.emailMethod(5);
Listlist=Builder.getList();
System.out.println(list.size()+":zzz");
}
}
- 基础几个设计模式
- 设计模式:几个原则
- (15) - 几个设计模式
- 设计模式-几个原则
- 设计模式几个原则探讨
- 设计模式的几个原则
- 设计模式的几个基本原则
- 几个设计模式的例子
- 设计模式中的几个法则
- 常用的几个设计模式
- 基本的几个设计模式
- JAVA中的几个设计模式
- 设计模式的几个原则
- 黑马程序员———基础视频中涉及的几个设计模式
- 设计模式中的几个设计原则总结
- 设计模式之几个基本设计原则
- 设计模式参考资料(基础)
- 设计模式基础
- MySQL笔记-基础知识
- 哈夫曼树(理论篇)
- QT 5.3开发及移植 实例
- DWR框架学习
- myeclise添加javascript插件aptana方法及遇到问题的解决
- 基础几个设计模式
- tomcat 的lib下添加多个web项目共享的jar包方法
- mysql分库分表
- JavaScript规范-变量
- 缓存技术之Ehcache(4)页面缓存
- Java集合框架List,Map,Set等全面介绍
- CherryPy 入门
- longest continuous increasing subarray
- 根据枚举名转换成枚举类型