设计模式--单例和工厂(牛刀小试 呵呵)

   首先说说这个简单的singleton(单例设计模式) 原理很简单 就是我们在类里面提供一个private的构造方法 让别的类不能new我的实例 自己来控制自己的产生 然后有个一个getInstance的静态方法 里面返回本身类里面new的实例 ------呵呵  实现了单例的设计模式 其实单例的实现还有很多方法 希望大家来讨论
code:
   
package com.test.bean;
public class TestSingletonBean {
	static TestSingletonBean tsb = new TestSingletonBean();
	private TestSingletonBean(){
		System.out.println("这个方法就是用来防止别人new的");
	}
	/**通过这个方法 获得对象*/
	private static TestSingletonBean getInstance(){
		return tsb;
	}
}
    


然后是工厂了  工厂模式就相对比较复杂 但是把java 多态 封装 继承 体现的淋漓尽致
呵呵 首先说下factory的实现原理 首先有一个抽象父类BaseFactory 里面有一个抽象的方法create()-----负责new对象  然后是他的子类 每个子类都是一个特定的工厂 比如Bean1Factory extends BaseFactory  顾名思义Bean1Factory 是专门产生Bean1对象的工厂  然后在具体的类之上 我们再抽线出一个接口 BaseInterface 所有的需要通过工厂产生的对象所属类都implements它.
  code:
  BaseFactory----
 
  package com.test.base;
public abstract class BaseFactory {
	abstract public BaseInterface create();
}
  

Bean1Factory :
   package com.test.factory;
import com.test.base.BaseFactory;
import com.test.base.BaseInterface;
import com.test.bean.Bean1;

public class Bean1Factory extends BaseFactory{
	@Override
	public BaseInterface create() {
		return new Bean1();
	}
}

Bean2Factory :
package com.test.factory;

import com.test.base.BaseFactory;
import com.test.base.BaseInterface;
import com.test.bean.Bean2;

public class Bean2Factory extends BaseFactory {
	@Override
	public BaseInterface create() {
		return new Bean2();
	}
}

Bean1:
package com.test.bean;
import com.test.base.BaseInterface;
public class Bean1 implements BaseInterface {
	@Override
	public void print() {
	System.out.println("bean1");
	}
}

Bean2
package com.test.bean;
import com.test.base.BaseInterface;
public class Bean2 implements BaseInterface {
	@Override
	public void print() {
		System.out.println("bean2");
	}
}


接下来是我们的客户端了:
package com.test.client;

import com.test.base.BaseFactory;
import com.test.base.BaseInterface;
import com.test.factory.Bean2Factory;

public class Client {

	/**
	 * @param args
	 */
	public void test(){
		BaseFactory factory = new Bean2Factory();
		BaseInterface bf = factory.create();
		bf.print();
	}
	public static void main(String[] args) {
		Client c = new Client();
		c.test();
	}

}



OK------

你可能感兴趣的:(java,设计模式,C++,c,bean)