一种新型的编程方法:人类编程法
人类编程法
首先介绍一下这个方法的精髓:
1.责任明确。每个人该做什么,做好自己那块就行了,不用管其它的。
2.松藕合。各模块之间没有关联。如果需要他人协助,喊一声就行。
3.接口统一。所有的接口统一只传递一个参数,不管需要什么变化,接口不用变。
4.故障最小化。谁出错了,修改谁就可以,错误不会扩散。
好了,下面我们看一下它的实现:
人类编程法有3个主类:Params,Person,Pepole。Params负责给Person传递命令和参数。Person负责模块功能的实现,它只接收Params这一个参数。Pepole负责集合Person。
Person是属于顶层的控制模块,由它里控制程序就整个逻辑和实现,它可以可以调用MVC中的任意一层。已有系统升级到这种模式的话,也不需要该动已有的代码。
这种编程方法适用于所有的语言,可以把复杂的程序语言,改成人类平时使用的语言来操作,使用起来更方便。下面就以java程序为例,来看一下它的实现方法。
import java.util.HashMap; public class Params { private String cmd; private HashMap<String, Object> params = new HashMap(); public void setCmd(String cmd) { this.cmd = cmd; } public String getCmd() { return cmd; } public void setParam(String name, Object value) { params.put(name, value); } public Object getParam(String name) { return params.get(name); } }
public class Person { private Brain brain; private Person talker; private String name; public Person(String name) { this.name = name; brain = new Brain(this); talker = this; Pepole.getinstance().addPerson(this); } protected Brain getBrain() { return brain; } protected void addCmd(String cmd) { brain.addCmd(cmd); } public void listen(Person person, Params context) { talker = person; brain.prcocess(context); } public Person getTalker() { return talker; } public String getName() { return name; } public void process(Params context) { } @Override public String toString() { Person talker1; if (talker == null) { talker1 = this; } else talker1 = talker; return "TPerson{" + "brain=" + brain.toString() + ", talker=" + talker1.getName() + ", name='" + name + '\'' + '}'; } }
import java.util.HashMap; public class Pepole { private static final String TAG="PEPOLE"; private HashMap<String, Person> pepoleList = new HashMap(); private static Pepole instance = new Pepole(); public Pepole() { } public static Pepole getinstance() { return instance; } public void addPerson(Person person) { pepoleList.put(person.getName(), person); } public Person getPerson(String name) { return pepoleList.get(name); } public void say(String name, Params params) { Person person = getPerson(name); if (person != null) { person.listen(person, params); } else { StringBuffer sb=new StringBuffer(); sb.append(String.format("没有发现名字为'%s'的人员,请确认他的姓名是否正确!", name)); sb.append(String.format("人员名称列表%s", getPepoleList())); System.out.println(String.format("人员名称列表%s", toString())); } } @Override public String toString() { return "TPepole{" + "pepoleList=" + pepoleList + '}'; } public String getPepoleList(){ return String.valueOf(pepoleList.keySet()); } }
示例:
public class Cooker extends Person { public Cooker(String name) { super(name); getBrain().addCmd("做红烧肉"); } @Override public void process(Params context) { super.process(context); String cmd = context.getCmd(); if (cmd.equals("做红烧肉")) { hongshaorou(context); return; } } private void hongshaorou(Params params){ System.out.println("第一步:炒糖色"); System.out.println("第二步:放肉"); System.out.println("第三步:炖熟出锅"); } } public class Master extends Person { public Master(String name) { super(name); getBrain().addCmd("做红烧肉"); } @Override public void process(Params context) { super.process(context); String cmd = context.getCmd(); if (cmd.equals("做红烧肉")) { hongshaorou(context); return; } } private void hongshaorou(Params params){ System.out.println("第一步:倒冷水,放入五花肉,待水烧开出现杂质后将肉捞出"); System.out.println("第二步:热锅,倒入油。三成热时放入冰糖"); System.out.println("第三步:放佐料,小火炖45分钟"); System.out.println("第四步:时间到,开中高火收汁"); System.out.println("第五步:出锅、装盘"); } } public class Pepole_my { private Cooker cooker = new Cooker("厨师"); private Master master = new Master("大厨"); private static Pepole_my instance =new Pepole_my(); public Pepole_my(){ } public static void say(String name, Params params){ Pepole.getinstance().say(name,params); } } public class test { public static void main(String[] args) { System.out.println("厨师做法:"); Params params = new Params(); params.setCmd("做红烧肉"); Pepole_my.say("厨师", params); System.out.println("大厨做法:"); params = new Params(); params.setCmd("做红烧肉"); Pepole_my.say("大厨", params); } }
人类编程法完整示例下载
今天的文章 人类编程法分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83631.html