面向对象——设计模式(创建型)
抽象工厂


public class AbstractFactory {public static void main(String[] args){Factory factory1=new Factory1();ProductA productA1=factory1.createProductA();productA1.info();ProductB productB1=factory1.createProductB();productB1.info();Factory factory2=new Factory2();ProductA productA2=factory2.createProductA();productA2.info();ProductB productB2=factory2.createProductB();productB2.info();}
}interface ProductA{public void info();}interface ProductB{public void info();}class ProductA1 implements ProductA{@Overridepublic void info() {System.out.println("产品的信息:A1");}}class ProductA2 implements ProductA{@Overridepublic void info() {System.out.println("产品的信息:A2");}}class ProductB1 implements ProductB{@Overridepublic void info() {System.out.println("产品的信息:B1");}}class ProductB2 implements ProductB{@Overridepublic void info() {System.out.println("产品的信息:B2");}}interface Factory{public ProductA createProductA();public ProductB createProductB();}class Factory1 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA1();}@Overridepublic ProductB createProductB() {return new ProductB1();}}class Factory2 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA2();}@Overridepublic ProductB createProductB() {return new ProductB2();}}
生成器(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不用的表示。


import java.util.ArrayList;
import java.util.List;public class BuilderModel
{public static void main(String[] args){Director director=new Director();Builder builder1=new Builder1();director.Construct(builder1);Product product1=builder1.getResult();product1.show();Builder builder2=new Builder2();director.Construct(builder2);Product product2=builder2.getResult();product2.show();;}
}class Director{public void Construct(Builder builder){builder.BuildPart();}
}abstract class Builder{public abstract void BuildPart();public abstract Product getResult();
}class Builder1 extends Builder{Product product=new Product();@Overridepublic void BuildPart() {product.Add("A");product.Add("B");product.Add("C");product.Add("D");}@Overridepublic Product getResult() {return product;}
}class Builder2 extends Builder{Product product=new Product();@Overridepublic void BuildPart() {product.Add("a");product.Add("b");product.Add("c");product.Add("d");}@Overridepublic Product getResult() {return product;}
}class Product{List<String> parts=new ArrayList<String>();public void Add(String part){parts.add(part);}public void show(){System.out.println("产品的组成:");for(String s:parts)System.out.print(s+"");System.out.print("\n");}}
原型


public class PrototypeModel {public static void main(String[] args){Product product1=new Product(2022,5.21);System.out.println(product1.getID()+" "+product1.getPrice());product1.Clone();Product product2=(Product) product1.Clone();System.out.println(product2.getID()+" "+product2.getPrice());}}interface Prototype{public Object Clone();
}class Product implements Prototype{private int id;private double price;public Product(){}public Product(int id,double price){this.id=id;this.price=price;}public int getID(){return id;}public double getPrice(){return price;}@Overridepublic Object Clone() {Product object=new Product();object.id=this.id;object.price=this.price;return object;}
}
单例模式

public class SingletonModel{public static void main(String[] args){Singleton singleton1=Singleton.getInstance();}}class Singleton{private static Singleton instance=new Singleton();private Singleton(){} //仅有唯一一个实例public static Singleton getInstance(){return instance;}
}
