Skip to content

简单工厂

写于 2024-10-09

类图

简单工厂

代码实现

java
/* 简单工厂 */

// 接口
public interface Product {

    public void Find();

    public void Rent();
    
    public void Calculate();

    public void Return();
    
}

// 具体实现的类
public class Bicycle implements Product {
    
    public void Find(){
        System.out.println("FactoryA.Bicycle.Find");
    }

    public void Rent(){
        System.out.println("FactoryA.Bicycle.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryA.Bicycle.Calculate");
    }

    public void Return(){
        System.out.println("FactoryA.Bicycle.Return");
    }

}

public class ElectricBikesA implements Product{
    
    public void Find(){
        System.out.println("FactoryA.ElectricBikesA.Find");
    }

    public void Rent(){
        System.out.println("FactoryA.ElectricBikesA.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryA.ElectricBikesA.Calculate");
    }

    public void Return(){
        System.out.println("FactoryA.ElectricBikesA.Return");
    }

}

public class ElectricBikesB implements Product{
    
    public void Find(){
        System.out.println("FactoryB.ElectricBikesB.Find");
    }

    public void Rent(){
        System.out.println("FactoryB.ElectricBikesB.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryB.ElectricBikesB.Calculate");
    }

    public void Return(){
        System.out.println("FactoryB.ElectricBikesB.Return");
    }

}

public class Factory{

    public Product createProduct(string s){
        if(s.equals("Bicycle")){
            return new Bicycle();
        }else if (s.equals("ElectricBikesA")){
            return new ElectricBikesA();
        }else if (s.equals("ElectricBikesB")){
            return new ElectricBikesB();
        }
        return null;
    }
    
}

// 客户端
public class demo {
    public demo(){
        Factory factory = new Factory();

        Product bicycle = factory.createProduct("Bicycle");
        bicycle.Find();
        bicycle.Rent();
        bicycle.Calculate();
        bicycle.Return();

        Product electricBikesA = factory.createProduct("ElectricBikesA");
        electricBikesA.Find();
        electricBikesA.Rent();
        electricBikesA.Calculate();
        electricBikesA.Return();

        Product electricBikesB = factory.createProduct("ElectricBikesB");
        electricBikesB.Find();
        electricBikesB.Rent();
        electricBikesB.Calculate();
        electricBikesB.Return();
    }
    
}

工厂模式

类图

工厂模式

代码实现

java
/* 工厂模式 */

// 接口
public interface Product {

    public void Find();

    public void Rent();
    
    public void Calculate();

    public void Return();
    
}

public interface Factory {

    public Product createProduct();
    
}

// 具体实现的类
public class Bicycle implements Product {
    
    public void Find(){
        System.out.println("FactoryA.Bicycle.Find");
    }

    public void Rent(){
        System.out.println("FactoryA.Bicycle.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryA.Bicycle.Calculate");
    }

    public void Return(){
        System.out.println("FactoryA.Bicycle.Return");
    }

}

public class ElectricBikesA implements Product{
    
    public void Find(){
        System.out.println("FactoryA.ElectricBikesA.Find");
    }

    public void Rent(){
        System.out.println("FactoryA.ElectricBikesA.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryA.ElectricBikesA.Calculate");
    }

    public void Return(){
        System.out.println("FactoryA.ElectricBikesA.Return");
    }

}

public class ElectricBikesB implements Product{
    
    public void Find(){
        System.out.println("FactoryB.ElectricBikesB.Find");
    }

    public void Rent(){
        System.out.println("FactoryB.ElectricBikesB.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryB.ElectricBikesB.Calculate");
    }

    public void Return(){
        System.out.println("FactoryB.ElectricBikesB.Return");
    }

}

public class BicycleFactoryA implements Factory{

    public Product createProduct(){
        return new Bicycle();
    }
    
}

public class ElectricBikesFactoryA implements Factory{

    public Product createProduct(){
        return new ElectricBikesA();
    }
    
}

public class ElectricBikesFactoryB implements Factory{

    public Product createProduct(){
        return new ElectricBikesB();
    }
    
}

// 客户端
public class demo {
    public demo(){
        BicycleFactoryA bicycleFactoryA = new BicycleFactoryA();
        ElectricBikesFactoryA  electricBikesFactoryA = new ElectricBikesFactoryA();
        ElectricBikesFactoryB electricBikesFactoryB = new ElectricBikesFactoryB();

        Product bicycle = bicycleFactoryA.createProduct();
        bicycle.Find();
        bicycle.Rent();
        bicycle.Calculate();
        bicycle.Return();

        Product electricBikesA = electricBikesFactoryA.createProduct();
        electricBikesA.Find();
        electricBikesA.Rent();
        electricBikesA.Calculate();
        electricBikesA.Return();

        Product electricBikesB = electricBikesFactoryB.createProduct();
        electricBikesB.Find();
        electricBikesB.Rent();
        electricBikesB.Calculate();
        electricBikesB.Return();
    }
    
}

抽象工厂

类图

抽象工厂

代码实现

java
/* 抽象工厂模式 */

// 接口
public interface Product {

    public void Find();

    public void Rent();
    
    public void Calculate();

    public void Return();
    
}

public interface Factory {

    public Product createElectricBikes();
    public Product createBicycle();
    
}

// 具体实现的类
public class Bicycle implements Product {
    
    public void Find(){
        System.out.println("FactoryA.Bicycle.Find");
    }

    public void Rent(){
        System.out.println("FactoryA.Bicycle.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryA.Bicycle.Calculate");
    }

    public void Return(){
        System.out.println("FactoryA.Bicycle.Return");
    }

}

public class ElectricBikesA implements Product{
    
    public void Find(){
        System.out.println("FactoryA.ElectricBikesA.Find");
    }

    public void Rent(){
        System.out.println("FactoryA.ElectricBikesA.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryA.ElectricBikesA.Calculate");
    }

    public void Return(){
        System.out.println("FactoryA.ElectricBikesA.Return");
    }

}

public class ElectricBikesB implements Product{
    
    public void Find(){
        System.out.println("FactoryB.ElectricBikesB.Find");
    }

    public void Rent(){
        System.out.println("FactoryB.ElectricBikesB.Rent");
    }

    public void Calculate(){
        System.out.println("FactoryB.ElectricBikesB.Calculate");
    }

    public void Return(){
        System.out.println("FactoryB.ElectricBikesB.Return");
    }

}

public class FactoryA implements Factory{

    public Product createElectricBikes(){
        return new ElectricBikesA();
    }

    public Product createBicycle(){
        return new Bicycle();
    }
    
}

public class FactoryB implements Factory{
    
    public Product createElectricBikes(){
        return new ElectricBikesB();
    }

    public Product createBicycle(){
        return null;
    }
    
}


// 客户端
public class demo {
    public demo(){
        BicycleFactoryA bicycleFactoryA = new BicycleFactoryA();
        FactoryA  factoryA = new FactoryA();
        FactoryB factoryB = new FactoryB();

        Product bicycle = factoryA.createBicycle();
        bicycle.Find();
        bicycle.Rent();
        bicycle.Calculate();
        bicycle.Return();

        Product electricBikesA = factoryA.createElectricBikes();
        electricBikesA.Find();
        electricBikesA.Rent();
        electricBikesA.Calculate();
        electricBikesA.Return();

        Product electricBikesB = factoryB.createElectricBikes();
        electricBikesB.Find();
        electricBikesB.Rent();
        electricBikesB.Calculate();
        electricBikesB.Return();
    }
    
}