抽象工厂


java
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{
@Override
public void info() {
System.out.println("产品的信息:A1");
}
}
class ProductA2 implements ProductA{
@Override
public void info() {
System.out.println("产品的信息:A2");
}
}
class ProductB1 implements ProductB{
@Override
public void info() {
System.out.println("产品的信息:B1");
}
}
class ProductB2 implements ProductB{
@Override
public void info() {
System.out.println("产品的信息:B2");
}
}
interface Factory{
public ProductA createProductA();
public ProductB createProductB();
}
class Factory1 implements Factory{
@Override
public ProductA createProductA() {
return new ProductA1();
}
@Override
public ProductB createProductB() {
return new ProductB1();
}
}
class Factory2 implements Factory{
@Override
public ProductA createProductA() {
return new ProductA2();
}
@Override
public ProductB createProductB() {
return new ProductB2();
}
}
生成器(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不用的表示。


java
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();
@Override
public void BuildPart() {
product.Add("A");
product.Add("B");
product.Add("C");
product.Add("D");
}
@Override
public Product getResult() {
return product;
}
}
class Builder2 extends Builder{
Product product=new Product();
@Override
public void BuildPart() {
product.Add("a");
product.Add("b");
product.Add("c");
product.Add("d");
}
@Override
public 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");
}
}
原型


java
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;
}
@Override
public Object Clone() {
Product object=new Product();
object.id=this.id;
object.price=this.price;
return object;
}
}
单例模式

java
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;
}
}