创建型之单态模式和工厂方法模式

本文介绍了单例模式和工厂方法两种设计模式。单例模式确保一个类只有一个实例,并提供全局访问点;工厂方法模式定义了一个创建对象的接口,让子类决定实例化哪一个类。

1.单态模式

package demo;

public class LazySingleton {
  private static LazySingleton instance=null;
  private LazySingleton(){}
  public static LazySingleton getInstance(){
   if (instance==null){
           instance=new LazySingleton();
           System.out.println("**************");
   }
   return instance;
  }
}

 

调用时,用单态类的静态方法去获得实例

package demo;

public class testMain {

 public static void main(String[] args) {
  LazySingleton my=LazySingleton.getInstance();
  LazySingleton my2=LazySingleton.getInstance();
  System.out.println(my==my2);//返回true
 }
}
单态模式只能有一个实例

单态类必须自已创建自已唯一的实例

单态类必须给所有其他对象提供这一实例.

 

优点:不必反复去创建单态对象,浪费内存

缺点:没有考虑垃圾回收,不能应用于多线程

 

2工厂方法

工厂方法模式是由一个工厂对象决定创建出那一种产品的实例

先定义接口IFruit.java

package demo;

public interface IFruit {
 public void eat();
}
不同的产品对接口的不同实现Orange.java 

package demo;

public class Orange implements IFruit {

 public void eat() {
  System.out.println("eat orange");
 }
}

apple实例去实现接口,Apple.java

package demo;

public class Apple implements IFruit{

 public void eat() {
  System.out.println("eat apple");
 }
}
//建立工厂类,决定生产哪种产品(orange or applel)

package demo;

public class SimpleFactory {
  public static IFruit createFruit(){
   //return new Apple();
   return new Orange();}
}

//client程序调用生产过程Client.java

package demo;

public class Client {

 public static void main(String[] args) {
      IFruit fruit=SimpleFactory.createFruit();//这里并不关心生产的是什么,由简单工厂类来决定产品

      fruit.eat();
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值