设计模式
单例模式
package com.designpattern; public class SingletonDemo { private static volatile SingletonDemo singleton; private SingletonDemo(){} private static SingletonDemo getInstance() { if (singleton == null) { synchronized (SingletonDemo.class) { if (singleton == null) { singleton = new SingletonDemo(); } } } return singleton; } }
简单工厂模式
package com.designpattern; /** * 简单工厂模式 * * 抽象Product、Product类、工厂类、 * */ abstract class Phone{ public abstract void sing(); } class MiPhone extends Phone { @Override public void sing() { System.out.println("xiaomi"); } } class IPhone extends Phone { @Override public void sing(){ System.out.println("Iphone"); } } class PhoneFactory{ public Phone make(String kind){ if(kind.equalsIgnoreCase("xiaOmI")){ return new MiPhone(); }else if(kind.equalsIgnoreCase("iphOne")){ return new IPhone(); } return null; } } public class SimpleFactoryDemo { public static void main(String[] args) { PhoneFactory pf = new PhoneFactory(); Phone phone = pf.make("xiaoMI"); phone.sing(); } }
工厂方法模式
package com.designpattern;
/**
* 工厂方法模式
*
* 抽象目标类、具体目标类、工厂接口
*
*/
//abstract class Phone{
// public abstract void sing();
//}
//
//class MiPhone extends Phone {
// @Override
// public void sing() {
// System.out.println("xiaomi");
// }
//}
//
//class IPhone extends Phone {
//
// @Override
// public void sing() {
// System.out.println("iphone");
// }
//}
interface IFactory{
Phone makePhone();
}
class MiFactory implements IFactory{
@Override
public Phone makePhone() {
return new MiPhone();
}
}
class IPhoneFactory implements IFactory {
@Override
public Phone makePhone() {
return new IPhone();
}
}
public class FactoryMethodDemo {
public static void main(String[] args) {
IFactory miFactory = new MiFactory();
IFactory iphoneFactory = new IPhoneFactory();
Phone miPhone = miFactory.makePhone();
Phone iPhone = iphoneFactory.makePhone();
miPhone.sing();
iPhone.sing();
}
}
一回生,二回熟