单例模式
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();
}
}