Factory(Abstract Factory)

来源:互联网 发布:全能数据恢复免费版 编辑:程序博客网 时间:2024/05/18 00:13
 

/**
 *
 */
package com.sean.factory.abst;

import com.sean.factory.Sex;

/**
 * @author Sean_Zhang
 *
 */
public class PersonAbstractFactory {
 public static IPerson getPerson(Sex sex,boolean isMarried) {
  IPerson person = null;
  if(sex == Sex.MALE) {
   person = new Man(isMarried);
  } else if(sex == Sex.FEMALE) {
   person = new Woman(isMarried);
  }
  return person;
 }
}

package com.sean.factory.abst;

import com.sean.factory.Sex;

public class Man extends Person {
 public Man(boolean isMarried) {
  super(isMarried);
 }
 
 public IName getName() {
  return new ManName();
 }

 public IPartner getPartner() {
  IPartner partner = null;
  if(isMarried()) {
   partner = new WomanPartner();
  }
  return partner;
 }

 public Sex getSex() {
  return Sex.MALE;
 }
}

package com.sean.factory.abst;

import com.sean.factory.Sex;

public class Woman extends Person {
 public Woman(boolean isMarried) {
  super(isMarried);
 }
 
 public IName getName() {
  return new WomanName();
 }

 public IPartner getPartner() {
  IPartner partner = null;
  if(isMarried()) {
   partner = new ManPartner();
  }
  return partner;
 }

 public Sex getSex() {
  return Sex.FEMALE;
 }
}

/**
 *
 */
package com.sean.factory.abst;

import com.sean.factory.Names;

/**
 * @author Sean_Zhang
 *
 */
public class WomanName implements IName {

 /* (non-Javadoc)
  * @see com.sean.factory.abst.IName#getName()
  */
 public String getName() {
  return Names.WOMAN.getName();
 }

}

/**
 *
 */
package com.sean.factory.abst;

import com.sean.factory.Names;

/**
 * @author Sean_Zhang
 *
 */
public class ManName implements IName {

 /* (non-Javadoc)
  * @see com.sean.factory.abst.IName#getName()
  */
 public String getName() {
  return Names.MAN.getName();
 }

}

 

/**
 *
 */
package com.sean.factory.abst;

/**
 * @author Sean_Zhang
 *
 */
public class ManPartner implements IPartner {

 /* (non-Javadoc)
  * @see com.sean.factory.abst.IPartner#getPartner()
  */
 public Partner getPartner() {
  return Partner.HUSBAND;
 }
}

/**
 *
 */
package com.sean.factory.abst;

/**
 * @author Sean_Zhang
 *
 */
public enum Partner {
 WIFE,HUSBAND;
}

/**
 *
 */
package com.sean.factory.abst;

/**
 * @author Sean_Zhang
 *
 */
public class WomanPartner implements IPartner {

 /* (non-Javadoc)
  * @see com.sean.factory.abst.IPartner#getPartner()
  */
 public Partner getPartner() {
  return Partner.WIFE;
 }
}

/**
 *
 */
package com.sean.factory.abst;

/**
 * @author Sean_Zhang
 *
 */
public interface IPartner {
 public Partner getPartner();
}

/**
 *
 */
package com.sean.factory.abst;

/**
 * @author Sean_Zhang
 *
 */
public interface IName {
 public String getName();
}

package com.sean.factory.abst;

import com.sean.factory.Sex;

public interface IPerson {
 public IName getName();
 
 public IPartner getPartner();
 
 public boolean isMarried();
 
 public Sex getSex();
}

 

 JDK Examples:

  • java.util.Calendar#getInstance()
  • java.util.Arrays#asList()
  • java.util.ResourceBundle#getBundle()
  • java.sql.DriverManager#getConnection()
  • java.sql.Connection#createStatement()
  • java.sql.Statement#executeQuery()
  • java.text.NumberFormat#getInstance()
  • javax.xml.transform.TransformerFactory#newInstance()

 

原创粉丝点击