public interface PC {
void make();
}
public interface Phone {
void make();
}
public class IPhone implements Phone{
@Override
public void make() {
System.out.println("生产苹果手机");
}
}
public class MiPhone implements Phone{
@Override
public void make() {
System.out.println("生产小米手机");
}
}
public class Mac implements Pc{
@Override
public void make() {
System.out.println("生产苹果平板");
}
}
public class MiPc implements Pc{
@Override
public void make() {
System.out.println("生产小米pc");
}
}
public interfance Factory {
Phone create();
Pc createPc();
}
public class IPhoneFactory implements Factory{
@Override
public Phone create() {
return new IPhone();
}
@Override
public Pc createPc() {
return new Mac();
}
}
public class MiPhoneFactory implements Factory{
@Override
public Phone create() {
return new MiPhone();
}
@Override
public Pc createPc() {
return new MiPc();
}
}
public class DemoTest {
public static void main(String[] args) {
IPhoneFactory iPhoneFactory1 = new IPhoneFactory();
iPhoneFactory1.create().make();
iPhoneFactory1.createPc().make();
MiPhoneFactory miPhoneFactory1 = new MiPhoneFactory();
miPhoneFactory1.create().make();
miPhoneFactory1.createPc().make();
}
}
context封装角色
屏蔽高层模块对策略、算法的直接访问。
strategy 抽象策略角色
定义每个策略必须有的方法和属性。
concreteStrategy具体策略角色
策略模式的实现方式:
普通方式:略
策略枚举:
public enum Calculator {
ADD("+"){
public int exec(int a,int b){
return a+b;
}
}
SUB("-"){
public int exec(int a,int b){
return a-b;
}
}
String value = "";
private Calculator(String _value){
this.value = _value;
}
public String getValue(){
return this.value;
}
public abstrac int exec(int a,int b);
}
public class Client {
public static void main(String[] args) {
//输入的两个参数是数字
int a = Integer.parseInt(args[0]);
String symbol = args[1]; //符号
int b = Integer.parseInt(args[2]);
System.out.println("输入的参数为:"+Arrays.toString(args));
System.out.println("运行结果为:"+a+symbol+b+"="+Calculator.ADD.exec(a,b));
}
}
原文:https://www.cnblogs.com/menghe123/p/14390923.html