工厂方法模式
程序员文章站
2022-07-14 09:24:15
...
转载请注明出处:https://blog.csdn.net/u011038298/article/details/84321202
/**
* 抽象产品类
*/
public abstract class Product {
// 产品ID
public abstract int getId();
// 产品名称
public abstract String getName();
// 产品的价格
public abstract float getPrice();
// 产品的品牌
public abstract String getBrand();
// 产品的生产日期
public abstract long getProductionDate();
}
/**
* 具体产品类:充电器
*/
public class Charger extends Product {
@Override
public int getId() {
return 101;
}
@Override
public String getName() {
return "绿联 苹果手机充电器";
}
@Override
public float getPrice() {
return 59;
}
@Override
public String getBrand() {
return "绿联(UGREEN)";
}
@Override
public long getProductionDate() {
return 1416541835;
}
}
/**
* 具体产品类:电脑
*/
public class Computer extends Product {
@Override
public int getId() {
return 102;
}
@Override
public String getName() {
return "联想扬天M4000e";
}
@Override
public float getPrice() {
return 3499;
}
@Override
public String getBrand() {
return "联想(Lenovo)";
}
@Override
public long getProductionDate() {
return 1445399435;
}
}
/**
* 具体产品类:电话
*/
public class Phone extends Product {
@Override
public int getId() {
return 103;
}
@Override
public String getName() {
return "华为荣耀 V10";
}
@Override
public float getPrice() {
return 1998;
}
@Override
public String getBrand() {
return "华为(HUAWEI)";
}
@Override
public long getProductionDate() {
return 1512963635;
}
}
/**
* 抽象工厂类
*/
public abstract class AbstractFactory {
// 创建产品:充电器
public abstract Product createCharger();
// 创建产品:电脑
public abstract Product createComputer();
// 创建产品:电话
public abstract Product createPhone();
}
/**
* 具体工厂类
*/
public class ConcreteFactory extends AbstractFactory {
@Override
public Product createCharger() {
return new Charger();
}
@Override
public Product createComputer() {
return new Computer();
}
@Override
public Product createPhone() {
return new Phone();
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 工厂方法模式也是创建型模式,此模式的核心精神是封装类中不变的部分,
* 提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。
* 它的核心结构有四个角色:抽象产品、具体产品、抽象工厂、具体工厂。
*/
AbstractFactory factory = new ConcreteFactory();
Product product = factory.createCharger();
product.getId();
product.getName();
product.getPrice();
product.getBrand();
product.getProductionDate();
}
}