java设计模式 单例设计模式+静态工厂模式


   单例设计模式




所谓单例就是一个类只能拥有一个类的实例,既然是一个就是在new的时候 不然他new 把构造方法设置为私有的就可以了

但是这个类还是要让别的访问的 就可以在其内部构造一个私有的 final例子 为什么要私有呢 就是让别的类访问不到,在设置一个公开的静态的方法 在这个方法中返回一个私有的实例,为什么要静态的 调用的时候不能new 啊 静态的就可以直接调用了 有了实例过后 就可以调用其中的方法了啊

例子

package com.fox_ice.SingletonDemo ;

public class SingletonDemo {

public static void main(String [] args)

{

            Single s=Single.getSingleInstance();

            s.say();
}

}


class Single
{

       private Single(){}

       private final static Single s1=new Single();

       public static Single getSingleInstance()

      {

                 return s1;

       }

       public void say()

    {

          System.out.println("java设计模式");

      }
}

静态工厂模式顾名思义 就是建造一个工厂里面有很多的东西 拿那个都行

package com.fox_ice.staticFactory;

interface Car
{
public void run();
public void stop();
}
class Benz implements Car
{
public void run()
{
   System.out.println("Benz is run");
}
public void stop()
{
   System.out.println("Benz is stop");
}
}
class Buick implements Car
{
public void run()
{
   System.out.println("Buick is run");
}
public void stop()
{
   System.out.println("Buick is stop");
}
}
class Factory 
{
public static Car getCarInstance(String type)
{
   Car c=null;
   try {
    c=(Car) Class.forName("com.fox_ice.staticFactory."+type).newInstance();         //java反射机制 获得一个类的实例 个人理解就是 导入一个包的内容 然后new 一下 的到一个实例
   } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return c;
}
}
public class staticFactory {

public static void main(String[] args) {
   
          Car c=Factory.getCarInstance("Benz");
          if(c!=null)
          {
           c.run();
           c.stop();
          }
          else
          {
           System.out.println("造不了这种汽车");
          }
}

}

这个的好处是 我们可以任意添加汽车类型 不必要在工厂里面修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值