Usage of Static Monobehaviour

I was wondering if this is the right way to use them. I am having multiple classes which interact with each other

For Example:
PlayerItems interacts with Player using the reference itemManager
instead of using GetComponent<> i feel this is much easier to handle. Is there any other way to do this?
and is the better than SendMessage? or slower than?
public class PlayerItems : MonoBehaviour {

	public static   PlayerItems 	itemManager; 
	public 		GameObject 	head;
	public 		GameObject 	body;
	void Awake () {
		itemManager = this;
	public void Equip()
		//Do Something

What you (almost) have there is called the Singleton pattern. An alternative to the singleton is the Monostate pattern (apparently there is no wikipedia page). Either is faster than using SendMessage.

I always avoid to use static member unless i’m not sure member has Class level access. though static member’s are 25% faster access then non static member but static member are occupied memory at first before non-static members and they did not release the memories until the application close. if static member reference to image file’s then in future when more memory need application will receive memory warning.

In my test result I saw SendMessage() is slower then using GetComponent().action