设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式的目的是提高代码的可重用性,让代码更容易被他人理解,并保证代码可靠性。它是代码编制真正实现工程化。
四个关键元素:(1) Pattern Name, (2) Problem, (3) Solution, (4) Consequences.
01. Factory Method Pattern
/* The product should be created by his own factory. */
LogFactory factory = new FileLogFactory(); Log log = factory.createLog(); log.writeLog();
任务的分配:
架构师1:定义factory, product接口;
程序员1:完成FileLogFactory类,FileProduct类;
问题:只定义产品,又如何?
答:factory类中可以添加如系统版本,环境等不适合由Product处理的信息。
02. Abstract Factory Pattern
一个工厂一般会生产一系列具有相关性的产品,即产品族。
在不同的工厂(大环境下)可能生产同一系列的产品族,具有相似的产品等级结构。
DBFactory factory= new OracleFactory(); // 什么样的工厂 生产 哪一个产品族的产品们;所以,以下代码是可复用的。 Connection connection = factory.createConnection(): Statement statement = factory.createStatement(); connection.connect(); statement.executeStatement();
任务的分配:
架构师1:定义factory, product接口;
程序员1:完成OracleFactory类,connection类,statement类。
03. Builder Pattern
如果抽象工厂模式是一个汽车配件生产厂,那么构建者模式是一个汽车组装厂,通过对配件的组装返回一台完整的汽车。
构建者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的的表现对象。
ActorController ac = new ActorController(); ActorBuilder ab = new AngelBuilder(); Actor angel = ac.construct(ab); // 什么样的builder/调料包 构建出 什么样的一个角色/方便面 String type = angel.getType(); System.out.println(type + "的外观:"); System.out.println("性别:" + angel.getSex()); System.out.println("面容:" + angel.getFace()); System.out.println("服装:" + angel.getCostume()); System.out.println("发型:" + angel.getHairstyle());
[Design Patterns] 4. Creation Pattern
时间: 2024-10-14 00:31:12