一、工厂模式
1、工厂模式:
工厂就是为我们实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式,而抽象工厂模式是工厂方法模式的扩展。
2、工厂模式的意图:定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化,工厂方法吧实例化的工作推迟到子类中去实现。
3、什么情况下适合工厂模式?
有一组类似的对象需要创建。在编码时不能预知需要创建那种累的实例。系统需要考虑扩展性,不应依赖于产品类实现如何被创建、组合和表达的细节。
4、工厂模式的动机:
在项目中,经常面临着对象要随需求的变化而变化的情况,而工厂模式的目的就是,降低耦合,使其他依赖该对象的对象不随之改变。基于项目现状将代码进行如下设计:
尽量松耦合,一个对象的依赖对象的变化与本身无关, 具体产品与客户端剥离,责任分割。
package factory; public interface Boy { public void drawMan();}package factory; public interface Girl { public void drawWowen(); }package factory;public class HNBoy implements Boy{ @Override public void drawMan() { // TODO Auto-generated method stub System.out.println("HNBoy.drawMan()"); }}package factory; public class HNFactory implements PersonFactory{ @Override public Boy getBoy() { // TODO Auto-generated method stub return new HNBoy(); } @Override public Girl getGirl() { // TODO Auto-generated method stub return new HNGirl(); } }package factory;/* * 新年系列女孩 */public class HNGirl implements Girl{ @Override public void drawWowen() { // TODO Auto-generated method stub System.out.println("HNGirl.drawWowen()"); } }package factory; public class MCBoy implements Boy{ @Override public void drawMan() { // TODO Auto-generated method stub System.out.println("MCBoy.drawMan()"); }}package factory;/* * 圣诞加工厂 */ public class MCFactory implements PersonFactory{ @Override public Boy getBoy() { // TODO Auto-generated method stub return new MCBoy(); } @Override public Girl getGirl() { // TODO Auto-generated method stub return new MCGirl(); } }package factory;/* * 圣诞女孩类 */public class MCGirl implements Girl { @Override public void drawWowen() { // TODO Auto-generated method stub System.out.println("圣诞系列女孩"); } }package factory;/* * 人物实现接口 */public interface PersonFactory { //男孩接口 public Boy getBoy(); //女孩接口 public Girl getGirl(); }二、单例模式
强烈建议写法:
public class singleton{
private singleton(){
}
private static singleton instance=new singleton();
public static singleton getInstance(){
return instance;
}
}