java设计模式----创建型

来源:互联网 发布:python nginx日志分析 编辑:程序博客网 时间:2024/06/08 09:16
java 设计模式:总体分为三大类  
创建型:工厂模式  单例模式  建造者模式 
结构型:桥接模式 适配器模式 代理模式  装饰者模式 外观模式 组合模式
行为型:


工厂模式:创建一个工厂 工厂里是一个生产对象的地方 需要时直接在工厂里面提取一个对象即可; 
应用场景:需要频繁的使用一个对象,创建该对象比较耗内存
静态工厂:
//发送消息服务的接口 
public interface MsgSend {

public void send();
}


//发送邮件
public class EamilSender implements MsgSend {


@Override
public void send() {
System.out.println("发送邮件消息");

}


}


// 发送短信
public class TeleSender implements MsgSend{


@Override
public void send() {
System.out.println("发送短信消息");

}


}


// 工厂类
public class MsgFactory {


public static EamilSender getEamilSender(){
return new EamilSender();

}

public static TeleSender getTeleSender(){
return new TeleSender();

}
public static void main(String[] args) {
// 测试
MsgFactory.getEamilSender().send();
MsgFactory.getTeleSender().send();
}
}
单例模式:好处 保证在jvm中只有一个该对象的实例存在;
对于一些大型的对象创建时很消耗内存;省去了new的炒作;
有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,
系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。


public class SingleTon {
// 私有的静态实例 防止被引用,赋值null 目的是实现延迟加载
private static SingleTon instance = null;


// 私有的构造方法 防止被实例化
private SingleTon() {
}


// 方法上的同步锁 保证线程安全 加了同步锁性能降低
public static synchronized SingleTon getSingTon() {
if (instance == null) {


return new SingleTon();
}
return instance;
}

// synchronized 只需要锁住new 对象的这一步
public static SingleTon getSingTon1() {


if (instance == null) {

synchronized (instance) {
instance= new SingleTon();
}
}
return instance;
}
}


建造者模式:与工厂模式类似,不同的地方就是 工厂模式创建的是单品,建造者模式创建的是多个单品




public class Builder {
private static List<MsgSend>list= new ArrayList<>();

public static void produceTele(int count){

for (int i = 0; i < count; i++) {
list.add(new TeleSender());
}
}
public static void produceEamil(int count){
for (int i = 0; i < count; i++) {
list.add(new EamilSender());
}
}
public static void main(String[] args) {
Builder.produceEamil(10);
Builder.list.get(0).send();
Builder.produceTele(1);
Builder.list.get(0).send();
}
}

















原创粉丝点击