設計模式開卷考試給的例子代碼都是一個類一個java,實在太噁心了,因此寫了一個python腳本.java
import os fileansdir=r'C:\Users\tonyson_in_the_rain\Desktop\筆記\JAVA代碼\設計模式'
主要用的os庫python
API總結:windows
combine函數是一個子過程,能夠把dirpath目錄下的全部文件合併爲一個文件設計模式
def combine(dirPath,filename): files=os.listdir(dirPath) res="" i = 0 for file in files: if file.endswith(".java"): i+=1 title=file with open(dirPath+'\\'+file,"r")as file: content=file.read() file.close() res+='\n\n' res+='#### '+title res+='\n\n' res+='```\n' res+=content res+='\n```\n' with open(dirPath+'\\'+filename+'.txt','w')as outFile: outFile.write(res) outFile.close()
而後遍歷各個文件夾分別跑一遍子過程便可app
import os def EnumPathFiles(path, callback): ii=0 if not os.path.isdir(path): print('Error:"',path,'" is not a directory or does not exist.') return list_dirs = os.walk(path) for root, dirs, files in list_dirs: for d in dirs: EnumPathFiles(os.path.join(root, d), callback) dirc=path+'\\'+d print(dirc) if(dirc.endswith('memento')): continue ii+=1 name=d combine(dirc,name) def callback1(path, filename): print(path+'\\'+filename) EnumPathFiles(r'C:\Users\tonyson_in_the_rain\Desktop\大三上學習\設計模式\設計模式2018(張欣佳)', callback1)
這裏會報一個錯誤,由於子目錄對不上號的緣由,不過在這以前有用的目錄咱們已經跑過了,因此不用管了.函數
合成的md文件以下:不過是按照類名字典序排的,須要手動調整順序學習
public class Apple implements Product { public void accept(Visitor visitor) { visitor.visit(this); } }
public class Book implements Product { public void accept(Visitor visitor) { visitor.visit(this); } }
import java.util.*; public class BuyBasket { private ArrayList list=new ArrayList(); public void accept(Visitor visitor) { Iterator i=list.iterator(); while(i.hasNext()) { ((Product)i.next()).accept(visitor); } } public void addProduct(Product product) { list.add(product); } public void removeProduct(Product product) { list.remove(product); } }
public class Client { public static void main(String a[]) { Product b1=new Book(); Product b2=new Book(); Product a1=new Apple(); Visitor visitor; BuyBasket basket=new BuyBasket(); basket.addProduct(b1); basket.addProduct(b2); basket.addProduct(a1); visitor=(Visitor)XMLUtil.getBean(); visitor.setName("張三"); basket.accept(visitor); } }
public class Customer extends Visitor { public void visit(Apple apple) { System.out.println("顧客" + name + "選蘋果。"); } public void visit(Book book) { System.out.println("顧客" + name + "買書。"); } }
public interface Product { void accept(Visitor visitor); }
public class Saler extends Visitor { public void visit(Apple apple) { System.out.println("收銀員" + name + "給蘋果過秤,而後計算其價格。"); } public void visit(Book book) { System.out.println("收銀員" + name + "直接計算書的價格。"); } }
public abstract class Visitor { protected String name; public void setName(String name) { this.name=name; } public abstract void visit(Apple apple); public abstract void visit(Book book); }